串口通讯的问题,如何发送数字?
有一串字符
String str = "F4 F5 0A 00 FF 00 ";
如何在串口发送的时候,当成数字发送?我现在发送出去的,就成了
46 34 20 46 35 20 30 46 46 20 30 ????
何解???????
问题点数:0、回复次数:10Top
1 楼lwdFeihu(飞鹄)回复于 2004-09-04 21:21:01 得分 0
F : 对应的ASCII 值是70 除16 =46
一次类推
发送的时候 它当70为十六进制自然转换成十进制发送了
知道问题出在哪里了
自然自己知道该怎么解了Top
2 楼wuxq7311(小清)回复于 2004-09-04 21:50:12 得分 0
是对应的ASCII码,有什么问题啊?发送就是发送这些啊!Top
3 楼wuxq7311(小清)回复于 2004-09-04 21:52:49 得分 0
一般COM口编程都会对应接收端一起编程!!就算没有,另一端接收的时候也是你需要的!Top
4 楼Lonelywolf1899(プログラマ)回复于 2004-09-08 11:42:33 得分 0
再把它转回来Top
5 楼commars(奋斗成就男人)回复于 2004-09-09 10:04:27 得分 0
建议到http://www.cppfans.com/cntfile.asp?fn=yb_comm1334a下载Victor控件,有完整的源代码和例子Top
6 楼cnrealboy(中国男人)回复于 2004-09-09 11:17:50 得分 0
46 34 20 46 35 20 30 46 46 20 30
自己加上0x,然后转换成为char就行了。Top
7 楼zcq129(风雨钟声)回复于 2005-07-26 12:53:19 得分 0
把每个数据都添上0x,然后把它们赋值给char型的变量,就可以了Top
8 楼microheart(心)回复于 2005-07-26 14:49:02 得分 0
如果输入是字符串,自己编个函数转换一下,很简单的
如果输入由自己定,楼主直接定义为十六进制字符串就可以了。Top
9 楼mozart007()回复于 2005-07-26 15:30:07 得分 0
建议你直接用写个函数把16进制,10进制,都转成2进制处理,不要用16进制,10进制了
反正串口上传的也是2进制,这样做效率最高Top
10 楼dxqxiaoqiang(球球)回复于 2005-08-24 23:50:32 得分 0
这是用Victor控件的例子
int nBytes = 0;
char Buffer[1000], *EndPtr;
AnsiString t,s = Edit1->Text.Trim();
while(s.Length()>0)
{
int p = s.Pos(' '); //空格
if(p>0)
{
t = s.SubString(1,p-1);
s = s.SubString(p+1,s.Length()).Trim();
Buffer[nBytes++] = strtol(t.c_str(), &EndPtr, 16); //十六进制字符串转成字节
}
else //还剩下最后一个字节
{
t = s;
s = "";
Buffer[nBytes++] = strtol(t.c_str(), &EndPtr, 16); //十六进制字符串转成字节
}
}
YbCommDevice1->Write(Buffer,nBytes);//如果用其他控件就改成WriteFile()等。
Top




