232程序总结

出现的问题及解决思路

变量名相近,比如wrnum,wrsum,在具体的使用过程中,很容易就出现问题,而且因为相近,这个问题出现在数组(例wrbuff[wrnum],wrbuff[sum])中时,不容易被发现:
解决:https://blog.csdn.net/u012314708/article/details/52130961

心得总结

程序的书写应该遵循层层递进的原则,比如说这次的232程序中的发送程序要包含起始位、数据位、校验位、停止位。如果一上来就直接把这些东西都包括进来,可能出现问题的地方太多,不利于问题的定位。所以,可以层层递进,先保证数据可以完整的被发送与接受,然后在增加起始位,停止位,把最容易出现问题的校验位的设置放到最后。
在使用while()死循环,很容易就让就让CPU跑到100%,适当加入一些sleep函数或者是usleep函数,可以在不影响程序运行的情况下,使得CPU的占用率降下来,一般还是使用usleep函数多一点。
fork()绝对是一个神奇的函数,可以被用来创建子进程,相当于把一个CPU一分为二,通过fork的不同返回值,只需要一个简单的if进行判断就可以进入到不同的程序中,让232的发送与接受做到了同时进行。

细节

异或运算:按照abcdefgh进行异或得到的结果,跟按照hgfedcba进行异或得到的结果是不相同的。
printf:多使用printf函数,把各种参数在程序运行过程中的变化显示出来,方便判断问题出在哪里,前面的renum、resum的问题就是通过这样的方法检查出来。
ASCII:控制字符虽然会影响到printf()函数的输出显示,但控制字符本身在内存还是占据存储空间的。只影响显示,不影响存储。

程序

#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
#include <getopt.h>

#define SERIAL_DEV_DIR "/dev/ttyS2"

int set232port(int fd )
{
	struct termi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值