【求助帖】8032串口的十六进制数据发送问题

sinat_36622652 2017-03-15 09:04:26
现在在用到ITE8528芯片中的内置UART串口,通过串口往外面抛数据,暂时的我在PC端是用串口助手接受(自己后续要开发APP),但是现在数据在传输的过程中出现了几个问题。
1.我现在有一些16进制的数据需要发送出去,比如0x16,0x399f 等待,
如果按以下方法发送,发现不行
typedef volatile unsigned char xdata XBYTE
XBYTE buff=0x16;
SBUF=buff;
这样设置时发现PC端接收不到数据不知道为什么
在这种情况下,是以 0001 0110 的数据发送出去了?还是按照0,x, 1,6 这4个字符依次发送了呢?


2.同样,如果我想同样在PC端向串口发送 0x16的数据,我该怎样操作呢?
如果在串口助手中选择以十六进制发送,是不是发送16就行了?这样串口端get到的是什么呢?


希望各位大神指导
...全文
211 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianxj001 2018-11-18
  • 打赏
  • 举报
回复
串口合法数据只有8位,所以,你需要传输16位数据,必须有个约定,也就是数据层协议。
比如就约定ASCII通信,那么,一个16位二进制数据例如0xAE80,你就发送4次ASCII码的字符“A”“E”"8" "0"。然后接受端就可以在收到这4个字符的时候,拼完整一个数。
或者干脆直接约定HEX发送,所有数据都是16位有效,那么发送时候,你串口只需要发送0XAE 0X80,接受端直接拼起来就是一个16位数据。
fly 100% 2018-11-13
  • 打赏
  • 举报
回复
并转串 串转并,用示波器看看波形吧
worldy 2018-11-13
  • 打赏
  • 举报
回复
你的做法
typedef volatile unsigned char xdata XBYTE
XBYTE buff=0x16;
SBUF=buff;

就是最直接将0x16发送出去,其它的方式都需要做转换
Friday星期五 2018-11-12
  • 打赏
  • 举报
回复
要以十六进制发出去,那就以十六进制来声明就行了。uint16_t
@赤 2018-10-25
  • 打赏
  • 举报
回复
你想发什么就发什么。串口精灵里也会有数据类型的转换。
sinat_36622652 2017-03-15
  • 打赏
  • 举报
回复
各位大神,希望能给我解释一波
sinat_36622652 2017-03-15
  • 打赏
  • 举报
回复
别让沉了呀,谢谢

27,373

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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