Linux下串口编程遇到接收数据错误和原因.docVIP

Linux下串口编程遇到接收数据错误和原因.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Linux下串口编程遇到接收数据错误和原因

Linux下串口编程遇到接收数据错误和原因 Linux涓嬩覆鍙g法绋嬮亣鍒扮殑鎺ユ敹鏁告嵁閷鍙婂師鍥? 杩戞棩鍦ㄨ皟璇曚覆鍙g殑鏃跺€欏彂鐜帮紝鍙︿竴璁惧鍚戞垜ARM鏉跨殑涓插彛鍙戦€?x0d锛屾垜鎺ユ敹涔嬪悗鍙樻垚浜?x0a锛岃繖鏄棶棰樹竴锛?鍙﹀褰撳鏂瑰悜鎴戝彂閫佷竴涓叉暟鎹紝濡傛灉鍏朵腑鏈?x11锛岄偅涔堟垜鎬绘槸婕忔敹姝ゆ暟锛岃繖鏄棶棰樹簩銆? 鐢变簬闂鑾悕鍏跺锛屼互涓烘槸绗旇鏈殑USB杞?32绾跨紗鐨勯棶棰橈紝鎹紝闂渚濇棫銆?浠ヤ负鏄鏂硅澶囩殑闂锛岄噰鐢ㄤ覆鍙h皟璇曞姪鎵嬫ā鎷熼€氳璁惧鍜孉RM鏉块€氳锛岄棶棰樹緷鏃с€?鏃犲鎵嶅幓鏌ョ湅璧勬枡锛屾渶缁堝緱浠ヨВ鍐筹紝鐜版€荤粨濡備笅锛? 1.涓插彛鎿嶄綔闇€瑕佺殑澶存枃浠? #include stdio.h //鏍囧噯杈撳叆杈撳嚭瀹氫箟 #include stdlib.h //鏍囧噯鍑芥暟搴撳畾涔?#include unistd.h //Unix鏍囧噯鍑芥暟瀹氫箟 #include sys/types.h #include sys/stat.h #include fcntl.h //鏂囦欢鎺у埗瀹氫箟 #include termios.h //POSIX涓柇鎺у埗瀹氫箟 #include errno.h //閿欒鍙峰畾涔? 2.鎵撳紑涓插彛 涓插彛浣嶄簬/dev涓紝鍙綔涓烘爣鍑嗘枃浠剁殑褰㈠紡鎵撳紑锛屽叾涓細 涓插彛1 /dev/ttyS0 涓插彛2 /dev/ttyS1 浠g爜濡備笅锛? int fd; fd = open(鈥?dev/ttyS0鈥? O_RDWR); if(fd == -1) { Perror(鈥滀覆鍙?鎵撳紑澶辫触锛佲€?; } //else //fcntl(fd, F_SETFL, FNDELAY); 闄や簡浣跨敤O_RDWR鏍囧織涔嬪锛岄€氬父杩樹細浣跨敤O_NOCTTY涓嶰_NDELAY杩欎袱涓爣蹇椼€?O_NOCTTY锛氬憡璇塙nix杩欎釜绋嬪簭涓嶆兂鎴愪负鈥滄帶鍒剁粓绔€濇帶鍒剁殑绋嬪簭锛屼笉璇存槑杩欎釜鏍囧織鐨勮瘽锛屼换浣曡緭鍏ラ兘浼氬奖鍝嶄綘鐨勭▼搴忋€?O_NDELAY锛氬憡璇塙nix杩欎釜绋嬪簭涓嶅叧蹇僁CD淇″彿绾跨姸鎬侊紝鍗冲叾浠栫鍙f槸鍚﹁繍琛岋紝涓嶈鏄庤繖涓爣蹇楃殑璇濓紝璇ョ▼搴忓氨浼氬湪DCD淇″彿绾夸负浣庣數骞虫椂鍋滄銆? 3.璁剧疆娉㈢壒鐜? 鏈€鍩烘湰鐨勪覆鍙h缃寘鎷尝鐗圭巼銆佹牎楠屼綅涓庡仠姝綅璁剧疆锛屼笖涓插彛璁剧疆涓昏浣跨敤termios.h澶存枃浠朵腑瀹氫箟鐨則ermios缁撴瀯锛屽涓嬶細 struct termios { tcflag_t c_iflag; //杈撳叆妯″紡鏍囧織 tcflag_t c_oflag; //杈撳嚭妯″紡鏍囧織 tcflag_t c_cflag; //鎺у埗妯″紡鏍囧織 tcflag_t c_lflag; //鏈湴妯″紡鏍囧織 cc_t c_line; //line discipline cc_t c_cc[NCC]; //control characters } 浠g爜濡備笅锛?int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300, B38400, B19200, B9600, B4800, B2400, B1200, B300, }; int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9600, 4800, 2400, 1200, 300, }; void SetSpeed(int fd, int speed) { int i; struct termios Opt; //瀹氫箟termios缁撴瀯 if(tcgetattr(fd, Opt) != 0) { perror(鈥渢cgetattr fd鈥?; return; } for(i = 0; i sizeof(speed_arr) / sizeof(int); i++) { if(speed == name_arr[i]) { tcflush(fd, TCIOFLUSH); cfsetispeed(Opt, speed_arr[i]); cfsetospeed(Opt, speed_arr[i]); if(tcsetattr(fd, TCSANOW, Opt) != 0) { perror(鈥渢csetattr fd鈥?; return; } tcflush(fd, TCIOFLUSH); } } } 娉ㄦ剰tcsetattr鍑芥暟涓娇鐢ㄧ殑鏍囧織锛?TCSANOW锛氱珛鍗虫墽琛岃€屼笉绛夊緟鏁版嵁鍙戦

您可能关注的文档

文档评论(0)

htfyzc + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档