我是靠谱客的博主 迷路大门,最近开发中收集的这篇文章主要介绍智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
C#中调用:
[DllImport(DLLName, EntryPoint
=
"
pdaAppRead
"
, CharSet
=
CharSet.Auto, SetLastError
=
true
)]
public static extern short td_select(Int32 Adr, byte [] getData);
private void button1_Click( object sender, EventArgs e) // 写
... {
string s = "这是测试1";
s = textBox1.Text;
byte[] b = Encoding.Unicode.GetBytes(s);//Encoding.Default.GetBytes(s);也可以;
td_select(2, s);
}
public static extern short td_select(Int32 Adr, byte [] getData);
private void button1_Click( object sender, EventArgs e) // 写
... {
string s = "这是测试1";
s = textBox1.Text;
byte[] b = Encoding.Unicode.GetBytes(s);//Encoding.Default.GetBytes(s);也可以;
td_select(2, s);
}
C++
LPSTR unicodeTOmbcs(CString str)
... {
LPSTR retlpa;
LPCOLESTR lpw;
lpw=(LPCOLESTR)str;
size_t wLen = wcslen( lpw ) + 1; // 宽字符字符长度,+1表示包含字符串结束符
int aLen=WideCharToMultiByte( // 第一次调用,计算所需 MBCS 字符串字节长度
CP_ACP,
0,
lpw, // 宽字符串指针
wLen, // 字符长度
NULL,
0, // 参数0表示计算转换后的字符空间
NULL,
NULL);
LPSTR lpa = new char [aLen];
WideCharToMultiByte(
CP_ACP,
0,
lpw,
wLen,
lpa, // 转换后的字符串指针
aLen, // 给出空间大小
NULL,
NULL);
// 此时,lpa 中保存着转换后的 MBCS 字符串
retlpa=lpa;
delete [] lpa;
return retlpa;
}
int td_select(unsigned char _Adr,unsigned char * _Data)
... {
CString inputstr=(LPCWSTR)_Data;
CString result;
LPSTR lpa=NULL;
unsigned char data[16];
lpa=unicodeTOmbcs(inputstr);//转换
strcpy((char *)data,(const char *)lpa);//data 这是测试1
}
... {
LPSTR retlpa;
LPCOLESTR lpw;
lpw=(LPCOLESTR)str;
size_t wLen = wcslen( lpw ) + 1; // 宽字符字符长度,+1表示包含字符串结束符
int aLen=WideCharToMultiByte( // 第一次调用,计算所需 MBCS 字符串字节长度
CP_ACP,
0,
lpw, // 宽字符串指针
wLen, // 字符长度
NULL,
0, // 参数0表示计算转换后的字符空间
NULL,
NULL);
LPSTR lpa = new char [aLen];
WideCharToMultiByte(
CP_ACP,
0,
lpw,
wLen,
lpa, // 转换后的字符串指针
aLen, // 给出空间大小
NULL,
NULL);
// 此时,lpa 中保存着转换后的 MBCS 字符串
retlpa=lpa;
delete [] lpa;
return retlpa;
}
int td_select(unsigned char _Adr,unsigned char * _Data)
... {
CString inputstr=(LPCWSTR)_Data;
CString result;
LPSTR lpa=NULL;
unsigned char data[16];
lpa=unicodeTOmbcs(inputstr);//转换
strcpy((char *)data,(const char *)lpa);//data 这是测试1
}
最后
以上就是迷路大门为你收集整理的智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组的全部内容,希望文章能够帮你解决智能设备 C#调用MFC DLL 传参值为汉字的解决方案 CString转存 unsigned char数组所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复