想串口发送十六机制数据问题。环境:XP SP3,古董VC++6.0。我用的是网上下载的PComm封装库进行串口读写的。char bufCheck[100]="55AA00055552588555555";sio_write(Port, buffCheck, 100);这段代码执行成功后,下位机也没发送另外的数据过来。但用串口调试助手,点击选择按十六进制发送。然后把55AA00055552588555555这串数据写入,点击发送。下位机就会把另外的数据传过来。图片如下!
调试欢乐多
看看。
你这么发的话就是modbus ASCII方式
但你这个设备显然是modbus RTU方式
int WINAPI sio_write(int port, char *buf, int len);这是函数声明,我现在可以算出一个CString的数据串,现在我想做的是代码如何把数据串转换为
BYTE bufCheck[100]={0x55,0xAA,0x00,0x05,0x55,0x52,0x58,0x85,0x55,0x55,0x5};
这种,其实我数据时这样得到的
CString a="55AA0081000000001000"+CheckH_chk+CheckD_chk+SYNC+"000000";
新手,确实基础不好!!!还望指教
int WINAPI sio_write(int port, char *buf, int len);这是函数声明,我现在可以算出一个CString的数据串,现在我想做的是代码如何把数据串转换为
BYTE bufCheck[100]={0x55,0xAA,0x00,0x05,0x55,0x52,0x58,0x85,0x55,0x55,0x5};
这种,其实我数据时这样得到的
CString a="55AA0081000000001000"+CheckH_chk+CheckD_chk+SYNC+"000000";
新手,确实基础不好!!!还望指教
原生API还有一个DCB结构,可以设置很多东西,不知道你这个库有否?
例如windows如果想要发送binary数据,好像需要在串口初始化时就设置好,否则默认ASCII
char bufCheck[100]好像你还没有memset初始化,你这个发送函数好像不看\0,所以字符串末尾后的乱码也可能一并发了出去。
CString有charset二义性,最好用CStringA或者std::string