关于使用WriteFile发送数据的问题

kinglinlin88 2011-06-26 12:36:51
String Temp;
char *SendData;
int ln;
DWORD lrc,BS;
if (hComm==0) return; //检查Handle值
Temp = mSend->Text;//取得发送的字符串

SendData=Temp.c_str(); //字符串转换
BS = Temp.Trim().Length();
WriteFile(hComm,SendData,BS,&lrc,NULL);

使用串口助手接收所发送的数据时:如果不选择16进制显示一切正常,如果选择16进制显示会显示相应的ASCII码,不清楚是什么原因。
例: 如果发送0011 串口16进制显示为30 30 31 31
如果发送00 11 串口16进制显示为30 30 20 31 31 //空格都显示上了
本人想使用WriteFile发送00 11,用串口助手接收到的是16进制数据00 11
本人刚刚接触C++Builder,想做一个串口通讯,不知那位大侠能帮帮忙指点一二.

...全文
389 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kinglinlin88 2011-06-28
  • 打赏
  • 举报
回复
问题解决结贴
kinglinlin88 2011-06-27
  • 打赏
  • 举报
回复
如果我想发送一组数据如何发送0x66,0x06,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB6,0x62
kinglinlin88 2011-06-27
  • 打赏
  • 举报
回复
String Temp;
char *SendData;
char SendData1[16];
SendData1[0]=(0xBB);
SendData1[1]=(0x06);
SendData1[2]=(0x02);
SendData1[3]=(0x01);
SendData1[4]=(0x00);
SendData1[5]=(0x4A);
SendData1[6]=(0x13);
SendData1[7]=(0x32);
SendData1[8]=(0x00);
SendData1[9]=(0x00);
SendData1[10]=(0x00);
SendData1[11]=(0x00);
SendData1[12]=(0x00);
SendData1[13]=(0x00);
SendData1[14]=(0x9B);
SendData1[15]=(0x77);
unsigned long lrc,BS;
if (hComm==0) return; //检查Handle值
Temp=SendData1;
SendData=Temp.c_str(); //字符串转换
BS = Temp.Length(); //取得发送的字符串数
WriteFile(hComm,SendData1,BS, &lrc,NULL); // 送出数据

/////////////////////////////////////////////////////////////
GetCommState(hComm,&dcb); // 得知目前通信端口的状态
dcb.BaudRate = CBR_9600; // 设置波特率为9600
dcb.ByteSize = 8; // 字节为 8 bit
dcb.Parity = NOPARITY; // Parity 为 None
dcb.StopBits = ONESTOPBIT; // 1 个Stop bit
////////////////////////////////////////////////////////////////
谢谢CppFile(..从头开始..)的回答!!!
我还有一个问题按上面的方法可以发送8位数据,我设置也是8位但是如果我需要同时16位数据如和处理那位大虾再次指点一下!!!
CppFile 2011-06-26
  • 打赏
  • 举报
回复
SendData[0]=0x00;
SendData[1]=0x11;


然后再发送

你在编辑框里填入00 11,发送的时候是字符型的,所以,接受的时候,显示的是ascii吗

1,314

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧