
2. 确认打开串口后, 是否设置了波特率等一系列的参数?
3. 确认是否可成功写入?
4. 尝试使用poll 来代替select. 对于系统设备, 有时select不能正常工作而poll是可以的。
没办法保证能够一次全部接收,只能自己缓存起来处理。比如,发送数据时候增加带有长度的数据头以及末尾的校验,用 select 对串口做非阻塞读取,读到数据后检查是否完整,不完整就接着读,直到获得完整数据再处理。select系统调用的作用就是让程序在多个文件描述符上进行等待,而套接字也是属于文件描述符的一种,所以服务器程序就可以利用select系统调用,在多个套接字上等待客户端请求,从而达到同时处理多个客户端的效果,而等待客户端请求就需要用listen调用对客户端进行监听,select调用检测的当然就是监听套接字咯。select系统调用是检测一个已打开的文件描述符的集合(这个集合是一个fd_set类型的数据结构),服务器程序需要创建这个集合,创建时需要用listen调用让套接字处于监听状态,只有这样当有一个新的连接发生时,描述符才会有活动发生,才能够被检测到。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)