如何将一个字符,比如“回车”的ascii码0x0d,转化为相应的字符,放在一个字符串后面一起发送到串口呢?
具体:下面是串口通讯里面的发送问题:
m_strTXData是一个文本框,我想读取文本框的值,然后在其后面加上一个回车符,一起发出去
其中,如何将0x0d变成相应的字符呢?
CString strtemp=m_strTXData;strtemp=strtemp+chr(0x0d); //在这里盗用了vb的函数chr(),肯定是不行的,怎么实现呢?
m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送ASCII字符数据
具体:下面是串口通讯里面的发送问题:
m_strTXData是一个文本框,我想读取文本框的值,然后在其后面加上一个回车符,一起发出去
其中,如何将0x0d变成相应的字符呢?
CString strtemp=m_strTXData;strtemp=strtemp+chr(0x0d); //在这里盗用了vb的函数chr(),肯定是不行的,怎么实现呢?
m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送ASCII字符数据
谢谢
解决办法一:
如果不是必须要传输二进制字符,可以在发收前后做转换,只传送可显示字符,这样0x0d就成了"0d".很多串口类设备就是这样做的.
解决办法二:
如果非传二进制,可以试试采用"硬件流控",这里有一段参考代码:
//流控设置
dcb.fOutxCtsFlow=0; // CTS handshaking on output //HARDWARE
dcb.fOutxDsrFlow=0; // DSR handshaking on output //HARDWARE
dcb.fDtrControl=DTR_CONTROL_ENABLE; // DTR Flow control //HARDWARE
dcb.fDsrSensitivity=1; // DSR Sensitivity //HARDWARE
dcb.fRtsControl=RTS_CONTROL_ENABLE; // Rts Flow control //HARDWARE
dcb.fOutX=0; // Enable output X-ON/X-OFF //SOFTWARE
dcb.fInX=0; // Enable input X-ON/X-OFF //SOFTWARE
dcb.XonLim=1024; // Transmit X-ON threshold //SOFTWARE
dcb.XoffLim=1024; // Transmit X-OFF threshold //SOFTWARE
dcb.XonChar=0x11; // Tx and Rx X-ON character //SOFTWARE
dcb.XoffChar=0x13; // Tx and Rx X-OFF character //SOFTWARE
//
dcb.ByteSize=8; //
dcb.Parity=0; //
dcb.StopBits=0; //
SetCommState(m_hCom,&dcb);
<完>
m_ctrlComm.SetOutput(COleVariant(m_strTXData));//发送ASCII字符数据
char cha = 'A';
strtemp.Format("%x", cha);