写一个串口接收发送程序
2013-07-06 09:53
344 查看
对于串口,流,的编程一直是相当头疼的,总是分不清头尾,写出来的程序总是没有把握,传输间的的程序尚可,但是发送一些带协议的东西就受不了了。
经过查资料,学习,得到一些经验,可以使用定界符法,显式长度法来发送数据。
一贯习惯是使用定界符+显式长度,写的不论不类,现在想想没有这个必要,如果在单片机上的话使用定界符,在中断里快速判断定界符和过滤每一个字符是相当奢侈的事情。故而转用显式长度法
显式长度的具体用法是,先发送要发送数据的字节数,在发送数据
接收也比较简单,先接收数据长度区,判断大小是否适合自己的RAM空间,
确定需要接收的长度后,启动正常的接收,并设置一个超时(在有限的时间里没有收到完整的数据,则丢弃)。在实际的应用中,发送数据总是有个时间限制的,一组数据会在相对集中的时间内完成。
例子:发送abcdefg,
char[] data = "abcdefg";
char length = 0;//一个字节
char i = 0;
do{
length ++;
while(data[length] != '\0');
putc(length);
for(int i=0; i<length; i++)
{
putc(data[i]);
}
备注:该例子未经过验证,仅供参考
经过查资料,学习,得到一些经验,可以使用定界符法,显式长度法来发送数据。
一贯习惯是使用定界符+显式长度,写的不论不类,现在想想没有这个必要,如果在单片机上的话使用定界符,在中断里快速判断定界符和过滤每一个字符是相当奢侈的事情。故而转用显式长度法
显式长度的具体用法是,先发送要发送数据的字节数,在发送数据
接收也比较简单,先接收数据长度区,判断大小是否适合自己的RAM空间,
确定需要接收的长度后,启动正常的接收,并设置一个超时(在有限的时间里没有收到完整的数据,则丢弃)。在实际的应用中,发送数据总是有个时间限制的,一组数据会在相对集中的时间内完成。
例子:发送abcdefg,
char[] data = "abcdefg";
char length = 0;//一个字节
char i = 0;
do{
length ++;
while(data[length] != '\0');
putc(length);
for(int i=0; i<length; i++)
{
putc(data[i]);
}
备注:该例子未经过验证,仅供参考
相关文章推荐
- 一个简易的51单片机串口接收和发送程序
- MIUI7,Android版本5.0.2,一个程序发送自定义广播,另一个程序没有接收到
- ht46ru232 串口接收、发送程序 C语言
- 串口通信程序中十六进制格式发送和接收实现
- CreateFile系类异步、并行(同一个串口发送接收)
- 做的一个C#串口发送和接收的小软件
- MFC串口通信设置及发送、中断接收程序
- C51串口中断接收和发送程序
- 用C++写一个UDP发送和接收程序
- stm32L151串口中断假如发送一个字节0x36,串口中断总是接收到0x00,连续点击几次发送,才能接收到0x36
- ATMEGA16串口发送和中断接收CVAVR程序
- 一个汇编写得GPS串口接收数据程序
- 51单片机串口程序,字符串/16进制发送与接收
- STM32的接收中断和发送中断同时使能会导致程序死在初始化串口那里。
- 编写一个聊天程序:有接收数据部分,和发数据的部分, 这两部分需要同时执行,使用多线程实现,一个控制接收,一个控制发送
- 串口通信程序中十六进制格式发送和接收实现
- keil编译的程序 “汉字显示不全、串口发送汉字接收后乱码缺失”问题
- 单片机IO口模拟串口程序(发送+接收
- 一个串口通信程序,适用于3g模块发送简单AT指令
- 串口通信程序中十六进制格式发送和接收实现