arduino怎样向串口发送中文字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了arduino怎样向串口发送中文字符相关的知识,希望对你有一定的参考价值。
任何终端经串口发送中文字符,必须符合字节流发送的原则。按ANSI编码规则是用两个字节(8位2进制)表示一个汉字的,那么汉字必须解读为两个字节,按高低字节顺序,逐字节逐位发送。1.接收的终端设备同样按此原则予以还原。
2.串口传送中有单双字节混合发送是按ANSI编码规则发送和接收的。 参考技术A 中文是有编码的,你看到的中文可能是unicode或者是gb编码的,因此你需要告诉具体应用场景才行。本回答被提问者和网友采纳
arduino串口接收的问题
我用auduino的串口向人机界面发送了16进制数据串,例如: 发送【 01 3E 00 88 A3】 人机界面马上会返回一串16进制数 【01 3E 04 23 32 2E 87 EF A4】 ,所以发送完数据后需要马上开始接收,怎么写程序能不漏掉数据,怎么样能够及时准确的接收数据,接收到以后需要把它存在数组中再判断或提取数据
/*********************************** 下面是串口发送16进制串的函数 *******************************************/
void UART_SendPacked(unsigned char Command,unsigned char *p,unsigned char num)
unsigned char Index=0;
unsigned char check=0;
while(UART_TX_Status==1);//等待串口空闲
UART_TX_Status = 1;//,串口忙标志置1,开始新一轮传输
Serial.flush();//Clear serial_buf
UART_TX_Buffer[Index++] = 0x55; //UART_TX_Buffer[0]=Command;命令1字节
UART_TX_Buffer[Index++] = num+1; //UART_TX_Buffer[1]=num+1; 长度1字节
UART_TX_Buffer[Index++] = Command; //校验=命令+数据(num+1字节)和取低8位
check = Command;
while(num--) //计算校验值(在Command基础上继续累加num个数据)得到校验原值
UART_TX_Buffer[Index++] = *p;
check += *p++;
UART_TX_Buffer[Index++] = check;// 校验原值的低8位【1个字节】作为校验值
UART_TX_Buffer[Index++] = 0xaa;//结束标志:0xAA
UART_TX_Number = Index;//所有数据已写入数组中,得到数组长度
Serial.write(UART_TX_Buffer,UART_TX_Number);
UART_TX_Status=0;
/* 例如,执行下面函数会发送16进制串,屏幕收到后会进入休眠,并返回一串16进制数给arduino */
void LCDSetWaitMode(void)//一级休眠
Send_Buffer[0] = 0xa5;
UART_SendPacked(0x8c,Send_Buffer,1);
/*然后就是怎么接收返回的16进制串的问题,我是这样写的,但是不放心,觉得不靠谱,还请大家帮忙*/
// 分数不够了,大家谅解一下,感谢!
void rev(int num_rev)
Serial.flush(); //清空串口缓存区
while(Serial.read() >= 0); //这句好像也是可以清空串口缓存区,好像用上面那句的话有时候会有旧数 据,不能全部替换为新数据,前几天遇到过这个问题,很奇怪。
if(Serial.available())
Receive_Buffer[cc++]=Serial.read();
if(cc>num_rev)
Serial.write(Receive_Buffer,cc);
cc=0;
void serialEvent()
//statements
int inByte = Serial.read();
Serial.write(inByte);
这个函数错误很小追问
serial.event() 是中断方式接收数据吗? 就是我不用在主程序中写接收函数了,只要判断自定义的那个数组中的数据就行?
我是16进制数,那串口的中断是怎么触发的,是来一个字节的起始位,触发一次中断,接收一个完字节后,存入缓冲区,avalible()++,然后才进入void event()函数吗?我是这样理解的不知道是不是对
来数据就执行中断程序,你中断里读数据,读完后清除缓存,这就基本不会错。很问题屡试不爽!
本回答被提问者采纳以上是关于arduino怎样向串口发送中文字符的主要内容,如果未能解决你的问题,请参考以下文章