串口不能发送大于128的字符,该如何处理

串口不能发送大于128的字符

CString handshake;
handshake.Format(_T("%c%c%c%c%c%c"),0xff,0x03,0x10,0x55,0x55,0x0a);
m_comm.put_Output(COleVariant(handshake));

用串口调试助手接收时 第一个数据接收到的是0x3f 后面小于0x80的数据都能正常接收 当发送的值大于0x80时串口调试助手接收到的数据变为0x3f
------解决方案--------------------
char 类型取值为-128到127. 所以所有大于127(十六进制为0x80)的字符都不行。你可以发送unsigned char数组。
------解决方案--------------------
“第一个数据接收到的是0x3f ” 就是 ‘?’
串口调试助手 改成 二进制。
------解决方案--------------------
m_MSComm.SetInputMode(1); //以二进制方式输入数据

------解决方案--------------------
m_MSComm.SetInputMode(1); //以二进制方式,肯定可以的,  连汉字都可以的。
------解决方案--------------------
引用:

CString handshake;
handshake.Format(_T("%c%c%c%c%c%c"),0xff,0x03,0x10,0x55,0x55,0x0a);
m_comm.put_Output(COleVariant(handshake));

用串口调试助手接收时 第一个数据接收到的是0x3f 后面小于0x80的数据都能正常接收 当发送的值大于0x80时串口调试助手接收到的数据变为0x3f


需要使用2进制模式或者对手法的数据进行编码转换为ascii数据