【C语言实现串口通信知识点整理(二)】遇到的问题整理(待续....)

1.c编译错误--error:stray \357 in program

UTF-8编码问题。UTF-8编码有BOM和无BOM格式。BOM,ByteOrderMark(字节标记顺序),表明使用UTF8来进行编码。UTF-8的BOM通常为3个字节EF BB BF。转换成对应的字符查看,就是‘\357’,‘\274’,‘\233’。

很大可能是中文字符的原因

2.static declaration follows non-static declaration 的错误 

原因是 调用的静态函数没有先声明一下,就是它定义在你调用之后啦。

解决:调用之前声明一下这个函数。

3.Linux下undefined reference to ‘pthread_create’问题解决

 需手动链接-线程库 -lpthread

4.串口打印信息为空,或者乱码。

很大可能是波特率不对

5.在头文件中定义了一个结构体RS_DATA,在A线程中对这个结构体RS_DATA进行了赋值,但是在另一个文件中调用该赋值的变量时发现,没有赋值成功,打印一直是0。。。

 首先想到没有线程同步.......然而加互斥锁以后仍然没有解决!最后是因为在外部调用的时候没有用extern......

在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。

6.在过程中遇到一个问题,在打开串口成功的情况下读到的数据一直获取不正常

解决方法:波特率就是通讯的速率,只有波特率一致的情况下才能保证接收方和发送方获取同样的数据。

7.有遇到几次死机问题,通过分析coredump文件,1:在使用strcpy()函数时,没有给指针申请空间导致段错误 2:在读写的时候没有进行异常处理,没有读到东西后面没有分析直接进行操作导致段错误。

8.因为创建线程后,线程并不是立刻就运行,而是等到时间片到来后再执行。

这样就可以解释创建线程后面的打印信息出现在线程里的打印信息前面。

                    ......
  1          CREAT_pthread();
  2          printf("%s     %d\n",__FUNCTION__,__LINE__);
                    ......
//第二行信息先打印出来,创建的线程里面的打印信息后出现

猜你喜欢

转载自blog.csdn.net/Beyond_1024/article/details/81625456
今日推荐