VC中串口中,如何通过
CString cswrite ="02 16 03 02 4D 53 30 34 32 32 30 30 30 88 88 03 02 09 03";
WriteFile(hdcom,cswrite,cswrite.GetLength(),&wCount,NULL);
向串口中写入数据时,写入的是十六进制搂数据?cswrite 如何转换为十六进制的?然后写入到串口中去?
CString cswrite ="02 16 03 02 4D 53 30 34 32 32 30 30 30 88 88 03 02 09 03";
WriteFile(hdcom,cswrite,cswrite.GetLength(),&wCount,NULL);
向串口中写入数据时,写入的是十六进制搂数据?cswrite 如何转换为十六进制的?然后写入到串口中去?
如果你给定的是一个字符串,那么它就把字符串中的每个字符的ASCII码当成字节流。
而在楼主的例子中,如果楼主想把cswrite中每个空格隔开的字符串当成一个整数,而不是字符串。
楼主需要先写一个解析函数,以空格为边界,将字符串解析成整数串。
char num[3];
CString cswrite="02 16 03 02 4D 53 30 34 32 32 30 30 30 88 88 03 02 09 03"; ;
int DataLen = cswrite.GetLength();
BYTE * SendData = new BYTE[(DataLen+1)/2];
for(int i = 0; i < cswrite.GetLength(); i++)
{
if(cswrite.GetAt(i) == ' ')
cswrite.Delete(i);
}
for(i = 0; i < cswrite.GetLength(); i+=2)
{
num[0] = cswrite.GetAt(i);
num[1] = cswrite.GetAt(i+1);
num[2] = '\0';
SendData[i/2] = atoi(num);
}
DataLen = i/2;
WriteFile(hdcom,SendData,DataLen,&wCount,NULL);
2. 用sscanf(cswrite.GetBuffer(),"%x",....)