电脑通过Socket发送byte[]数据给单片机的问题

botao258 2012-12-20 11:18:58
C#写好了socket接口程序,已经可以发数据到单片机,但是发送格式与到问题了,比如我想让单片机接收0xFF0x010x020xFF这样的数据,应该让上位机发怎样的数据?好像单片机收的数据都是ASCII码,怎样可以直接收到16进制数据?
...全文
227 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
e_board 2013-01-07
  • 打赏
  • 举报
回复
如果是数字的话用BitConverter int a=0xff0102ff; byte buff[]=BitConverter.GetBytes(a); socket.Send(buff);
botao258 2013-01-07
  • 打赏
  • 举报
回复
引用 1 楼 caozhy 的回复:
那要看你的上位机、下位机约定的协议。 如果接收的都是ascii码,你可以检查下你上位机怎么发数据的。发送的是byte[]么?
是发送的byte[]数据,发送的是FF0102FF,收到的也是FF0102FF这样的数据,怎样可以收到16进制数据呢? 我发数据的方法如下: private string ReadIni(string Section, string Ident, string Default) { Byte[] Buffer = new Byte[65535]; int bufLen = GetPrivateProfileString(Section, Ident, Default, Buffer, Buffer.GetUpperBound(0), FileName); string s = Encoding.GetEncoding(0).GetString(Buffer); s = s.Substring(0, bufLen); return s.Trim(); } public void sendData(string CMD) { if (skt.Connected == true) { byte[] bytes = new byte[10]; String str = CMD; bytes = System.Text.Encoding.Default.GetBytes(str);//类型转换,string转byte[] skt.Send(bytes); } else { MessageBox.Show("请先启动RSone系统", "RSone系统提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } 在按钮单击事件中,调用发送方法的时候,会传string类型数据给sendData函数,怎样改写可以将string的FF0102FF 发送出去变成对应16进制的0xFF0x010x020xFF ?谢谢
只在此山中 2012-12-21
  • 打赏
  • 举报
回复
一般单片机驱动的网卡可以接收byte[] 如 unsigned char Buffer[1000]; uint16 packet_len;
threenewbee 2012-12-20
  • 打赏
  • 举报
回复
那要看你的上位机、下位机约定的协议。 如果接收的都是ascii码,你可以检查下你上位机怎么发数据的。发送的是byte[]么?

110,538

社区成员

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

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

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