发送的是int数据,为何显示的是ASCII字符 ?
本帖最后由 myfocus-2048857 于 2016-12-21 18:37 编辑发送的是int数据,为何显示的是ASCII字符 ?
见图一,RS485主机端发送的是unsigned int型数据(0,1,2,3,4,5...);
见图二,丛机端接收后,通过printf打印到PC串口工具(见图三),显示的是ASCII字符。
请问:
1. 我发送的是unsigned int型数据,为什么在串口工具显示的是ASCII ?
2. 我想要 在 串口工具端也显示unsigned int型数据,该如何实现 ?
说明:
丛机接收端 RS485接收和printf用的是一个USART。
谢谢 !
附图一
附图二
附图三
本帖最后由 技术范儿 于 2016-12-21 19:36 编辑
LZ注意数据类型呀,你上面虽然定义了了unsigned int 没错是四个字节,但是串口出去的一个字节uint8_t,所以发送过程中舍去三个字节,如果想用串口传输小数或者整数甚至有符号数,建议LZ用memcpy函数处理一下,当然接收端也要根据端序做相应拼包 本帖最后由 技术范儿 于 2016-12-22 09:32 编辑
RS485发送完成转换到接收状态20ms刚刚好,再长或者在短都会有问题。
void UintToChar(uint inPut,char *outPut)//注意端序
{
char *p = (char *)&inPut;
outPut = p;
outPut = p;
outPut = p;
outPut = p;
}
void UintToChar(uint inPut,char *outPut)//注意端序
{
memcpy(outPut,(char *)&inPut,4);
}
在接收现实工具上勾选十六进制显示! 在显示部分,选择2进制,或者16等显示方式看看; 串口发送最低8位 同意1楼,高位被舍弃了 5265325 发表于 2016-12-22 08:48
串口发送最低8位
这个到底是那个,看大小端决定的,但是肯定是丢了三个字节,自己做个内存测试一下 :):):):) 谢谢各位,学习了
页:
[1]