向串口发送十六进制数据???在线等

lang915 2009-07-23 06:37:17
郁闷我几天,在此请教各位大侠。
是这样的.
我是通过 GPS设备的232接口,接入我的设备,需向我的设备发送 AA 01 (十六进制,通过GPS车载机传至设备)
初次测试失败。后来,我直接用GPS的232接入电脑的串口,用"串口调试工具"检测我发送的数据。收发都正常。
不解的是.我发送的是0xAA 而收到的却是 3F .比如发0x1F (也就是说,十六进制第一个是数字就是正常的)收到的就是 1F.后来我多次测试,无伦我发 0xAA ,0xBB ,0xCC,等等。收到的全是3F,是不是我写法上有问题。或者说我要发送什么数据。收到的才是十六进制AA   或者AA 01
...全文
625 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
lang915 2009-07-23
  • 打赏
  • 举报
回复
你是指这个吗? socket.Send(byte[] buffer)这个怎么转十六进制啊



public bool Send(String s)
{
try
{
//socket.Send(Encoding.ASCII.GetBytes(s.ToCharArray()));
socket.Send(Encoding.UTF8.GetBytes(s.ToCharArray()));
return true;
}
catch { }
return false;
}


[Quote=引用 16 楼 alifriend 的回复:]
请用十六进制模式发!其他任何模式都是字符模式,无法发送任意数值。
[/Quote]
波导终结者 2009-07-23
  • 打赏
  • 举报
回复
请用十六进制模式发!其他任何模式都是字符模式,无法发送任意数值。
lang915 2009-07-23
  • 打赏
  • 举报
回复
alifriend 你好,还得请教你:
如果ASCII码只到0x7F,那么那个编码可以去到 0xAA
我试过,UTF8,Unicode,UTF32 发过去没反应。
只有 UTF8发过去有反应,收到的却成了0xC2

[Quote=引用 5 楼 alifriend 的回复:]
你是不是用字符串形式发送的?请用16进制字节形式发送。
用字符串形式发送的话,合法的ASCII码只到0x7F,也就是说,大于0x7F的数你转成字符再发送的话,都会变成问号,也即0x3F
[/Quote]
lang915 2009-07-23
  • 打赏
  • 举报
回复
都写了%90了, 再改,真崩溃了



[Quote=引用 13 楼 zjh222 的回复:]
肯定要用到互操作,很麻烦,不如用VC++或Delphi
[/Quote]
zjh222 2009-07-23
  • 打赏
  • 举报
回复
肯定要用到互操作,很麻烦,不如用VC++或Delphi
lang915 2009-07-23
  • 打赏
  • 举报
回复
谢谢我不是直接与设备通信,TCP-->GPS车载机---->串口设备

[Quote=引用 8 楼 wuyq11 的回复:]
是否读取方式不正确,用SerialPort
参考
参考
[/Quote]
红街咖啡 2009-07-23
  • 打赏
  • 举报
回复
学习一下。
lang915 2009-07-23
  • 打赏
  • 举报
回复
谢谢alifriend 一语惊醒梦中人。我正是用ASCII 编码后通过TCP发给车载机的。
我试试,等下结贴


[Quote=引用 4 楼 lang915 的回复:]
如果0x3F是问号,那为什么发0X1A,或0x2B  接收的又是正常的发送数据。发0xAA  0xBB 就出0x3F
[/Quote]
波导终结者 2009-07-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 lang915 的回复:]
我也知道是二进制。设备只能发送十六进制才能有反应。发二进制没应
[/Quote]
二进制和十六进制是一回事……
wuyq11 2009-07-23
  • 打赏
  • 举报
回复
是否读取方式不正确,用SerialPort
参考
参考
lang915 2009-07-23
  • 打赏
  • 举报
回复
我也知道是二进制。设备只能发送十六进制才能有反应。发二进制没应
bwangel 2009-07-23
  • 打赏
  • 举报
回复


本来计算机内部数据就是二进制的.何来"发送十六进制?"
波导终结者 2009-07-23
  • 打赏
  • 举报
回复
你是不是用字符串形式发送的?请用16进制字节形式发送。
用字符串形式发送的话,合法的ASCII码只到0x7F,也就是说,大于0x7F的数你转成字符再发送的话,都会变成问号,也即0x3F
lang915 2009-07-23
  • 打赏
  • 举报
回复
如果0x3F是问号,那为什么发0X1A,或0x2B 接收的又是正常的发送数据。发0xAA 0xBB 就出0x3F
lang915 2009-07-23
  • 打赏
  • 举报
回复
接收我是用“串口调试软件”接书的。发送数据,我不是直接发送到我的设备:

电脑--->GPS车载机---->串口设备 (电脑通过TCP/UDP到GPS车载机,车载机上有232接口到我的串口设备,串口设备的信息是通过GPS传回我的电脑)

GPS车载机提供一种传输通道.

当然,0x3F我只是举一个例子.


郁闷啊
波导终结者 2009-07-23
  • 打赏
  • 举报
回复
0x3F不是问号嘛,你接收的代码可能有误,贴出来看看
qqiuzaihui 2009-07-23
  • 打赏
  • 举报
回复
以字节封送:
public int Write(byte[] WriteBytes)
{
int BytesWritten = 0;
if (hComm != INVALID_HANDLE_VALUE)
{
OVERLAPPED ovlCommPort = new OVERLAPPED();
WriteFile(hComm, WriteBytes, WriteBytes.Length, ref BytesWritten, ref ovlCommPort);

return BytesWritten;

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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