相信大多数人在使用串口传输不同单片机之间的数据时都会运到数据格式怎么对应起来的问题,今天我们就来聊聊!
在开始之前我插一个内容,就是不同的单片机之间的电平可能不相同,是不能直接使用杜邦线连接通信的,需要进行电平转换,是不是很多人之前都是直接接呢,这是错误的,只不过运气好,两单片机的电平都差不多,刚刚好符合TTL,才能能够正确的通信,巧!
Arduino用过吧,
这个串口调试串口再熟悉不过了,记住哈,这里面输入的是ASCALL字符,ASCII码将字符作为数字来表示,因为计算机只能接受数字信息,ASCII码将字符作为数字来表示,以便计算机能够接受和处理。
看看看,我们所有的字符,除了汉字那些,只需128个数字就能表示完。
记住,只需128
unsigned char (0~255)
char (-128~128)
如上上图,我输入61,使用unsigned char接收,通过Serial.print(buffer[0])打印出了5449,
故ASCALL转unsigned char,其实就是ASCALL转10进制
ASCALL:6 16进制:0x36 10进制:54
ASCALL:1 16进制:0x31 10进制:49
这个软件同理,需知道,不勾上16进制显示就是ASCALL字符,勾上就是16进制。
当我以%c输出时,就是本身,没错,ASCALL本身就是字符。
其实计算机里面只认识0和1,根本不认识那些16进制,但为什么我们能写0x..呢,因为规定好的,0x..在执行过程中,计算机是会先根据规定转换成0和1。。。