Æä¼òµ¥ÐÔ¡¢µÍ³É±¾ºÍ¹ã·ºµÄÓ²¼þÖ§³Ö£¬Ê¹µÃ´®¿ÚͨÐÅÔÚÊý¾Ý´«ÊäÖаçÑÝ×Ų»¿ÉÌæ´úµÄ½ÇÉ«
È»¶ø£¬´®¿ÚͨÐŵĿɿ¿ÐÔ³£³£Êܵ½¶àÖÖÒòËØµÄÓ°Ï죬ÆäÖд®¿Ú»º³åÇøµÄ¹ÜÀíºÍ¼à²âÓÈΪ¹Ø¼ü
±¾ÎĽ«ÉîÈë̽ÌÖLinux»·¾³Ï´®¿Ú»º³åÇø¼à²âµÄÖØÒªÐÔ¡¢·½·¨ÒÔ¼°ÈçºÎͨ¹ýÓÐЧµÄ¼à²â²ßÂÔÀ´È·±£Êý¾Ý´«ÊäµÄ¿É¿¿ÐÔºÍʵʱÐÔ
Ò»¡¢´®¿Ú»º³åÇøµÄ»ù±¾¸ÅÄî ´®¿ÚͨÐÅÖеĻº³åÇø£¨Buffer£©ÊÇÓÃÓÚÁÙʱ´æ´¢Êý¾ÝµÄÄÚ´æÇøÓò
ÔÚÊý¾Ý´«Êä¹ý³ÌÖУ¬·¢ËÍ·½ºÍ½ÓÊÕ·½Í¨³£²»»áÒÔÏàͬµÄËÙÂʹ¤×÷£¬»º³åÇøÆðµ½ÁËÆ½ºâÊý¾ÝÁ÷¶¯¡¢·ÀÖ¹Êý¾Ý¶ªÊ§µÄÖØÒª×÷ÓÃ
Linuxϵͳ¶Ô´®¿ÚÉ豸µÄÖ§³Ö·Ç³£³ÉÊ죬ͨ¹ý±ê×¼µÄÉ豸Îļþ£¨Èç`/dev/ttyS0`¡¢`/dev/ttyUSB0`µÈ£©¼´¿É·ÃÎÊ´®¿ÚÉ豸
ÔÚLinuxÄÚºËÖУ¬Ã¿¸ö´®¿ÚÉ豸¶¼ÓжÀÁ¢µÄ·¢ËÍ£¨TX£©ºÍ½ÓÊÕ£¨RX£©»º³åÇø
- ·¢ËÍ»º³åÇø£¨TX Buffer£©£ºÓÃÓÚ´æ´¢´ý·¢Ë͵ÄÊý¾Ý
µ±Ó¦ÓóÌÐòÏò´®¿ÚдÈëÊý¾Ýʱ£¬Êý¾ÝÊ×Ïȱ»Ð´Èë·¢ËÍ»º³åÇø£¬È»ºóÓÉ´®¿ÚÇý¶¯Öð²½·¢Ë͵½ÎïÀíÁ´Â·ÉÏ
- ½ÓÊÕ»º³åÇø£¨RX Buffer£©£ºÓÃÓÚ´æ´¢´ÓÎïÀíÁ´Â·½ÓÊÕµ½µÄÊý¾Ý
µ±´®¿Ú½ÓÊÕµ½Êý¾Ýʱ£¬Êý¾ÝÊ×Ïȱ»·ÅÈë½ÓÊÕ»º³åÇø£¬È»ºóÓ¦ÓóÌÐò¿ÉÒÔ´ÓÖжÁÈ¡Êý¾Ý
¶þ¡¢´®¿Ú»º³åÇø¼à²âµÄÖØÒªÐÔ 1.·ÀÖ¹Êý¾Ý¶ªÊ§£º´®¿ÚͨÐÅÖеÄÊý¾Ý´«ÊäËÙÂÊ¿ÉÄÜÊܵ½¶àÖÖÒòËØµÄÓ°Ï죬ÈçÓ²¼þÏÞÖÆ¡¢µç´Å¸ÉÈŵÈ
Èç¹û½ÓÊÕ»º³åÇøÒç³ö£¬Ð½ÓÊÕµÄÊý¾Ý½«¸²¸Ç¾ÉÊý¾Ý£¬µ¼ÖÂÊý¾Ý¶ªÊ§
ͨ¹ý¼à²â½ÓÊÕ»º³åÇø£¬¿ÉÒÔ¼°Ê±·¢ÏÖ²¢´¦Àí»º³åÇøÒç³öµÄÇé¿ö£¬´Ó¶ø±ÜÃâÊý¾Ý¶ªÊ§
2.Ìá¸ßÊý¾Ý´«ÊäЧÂÊ£ºÓÐЧµÄ»º³åÇø¼à²â¿ÉÒÔ°ïÖúÓ¦ÓóÌÐòºÏÀí¿ØÖÆÊý¾ÝµÄ¶Áдʱ»ú£¬±ÜÃâÆµ·±µÄÖжϴ¦ÀíºÍÉÏÏÂÎÄÇл»£¬´Ó¶øÌá¸ßÊý¾Ý´«ÊäµÄЧÂÊ
3.±£Ö¤ÊµÊ±ÐÔ£ºÔÚÐèÒª¸ßʵʱÐÔµÄÓ¦Óó¡¾°ÖУ¨Èçʵʱ¿ØÖÆÏµÍ³£©£¬Êý¾ÝµÄ¼°Ê±´«ÊäºÍ´¦ÀíÖÁ¹ØÖØÒª
ͨ¹ý¼à²â´®¿Ú»º³åÇø£¬¿ÉÒÔÈ·±£¹Ø¼üÊý¾ÝÔÚÐèҪʱÄܹ»Á¢¼´±»¶ÁÈ¡ºÍ´¦Àí£¬´Ó¶øÂú×ãʵʱÐÔÒªÇó
4.¹ÊÕÏÅŲéÓëÕï¶Ï£º´®¿ÚͨÐÅÖеĹÊÕÏÍùÍùÄÑÒÔÖ±½Ó¶¨Î»
ͨ¹ý¼à²â´®¿Ú»º³åÇøµÄ״̬£¬¿ÉÒÔÊÕ¼¯µ½·á¸»µÄÔËÐÐʱÐÅÏ¢£¬ÓÐÖúÓÚ¿ìËÙÅŲéºÍÕï¶ÏͨÐŹÊÕÏ
Èý¡¢LinuxÏ´®¿Ú»º³åÇø¼à²âµÄ·½·¨ ÔÚLinux»·¾³Ï£¬ÓжàÖÖ·½·¨¿ÉÒÔ¶Ô´®¿Ú»º³åÇø½øÐмà²â£¬°üÀ¨Ê¹ÓÃϵͳÃüÁî¡¢±àд×Ô¶¨Òå³ÌÐòÒÔ¼°ÀûÓÃÏÖÓеĿªÔ´¿âµÈ
1.ϵͳÃüÁî -dmesg£ºÏµÍ³Æô¶¯ºÍÓ²¼þ¼ì²â¹ý³ÌÖУ¬Äں˻ὫÏà¹ØÐÅÏ¢Êä³öµ½Äں˻·Ðλº³åÇø
ʹÓÃ`dmesg`ÃüÁî¿ÉÒԲ鿴ÕâЩÐÅÏ¢£¬°üÀ¨´®¿ÚÉ豸µÄ³õʼ»¯×´Ì¬¡¢Êý¾Ý´«Êä´íÎóµÈ
ËäÈ»`dmesg`²»ÄÜÖ±½ÓÏÔʾ´®¿Ú»º³åÇøµÄ״̬£¬µ«Ëü¿ÉÒÔÌṩÓÐÓõĵ÷ÊÔÐÅÏ¢
-stty£ºsttyÊÇÒ»¸öÓÃÓÚÅäÖúÍÏÔʾÖÕ¶ËÉ豸Çý¶¯ÉèÖõÄÃüÁî
ͨ¹ý`stty -F /dev/ttyS0 -a`¿ÉÒԲ鿴´®¿ÚÉ豸µÄµ±Ç°ÅäÖ㬰üÀ¨²¨ÌØÂÊ¡¢×Ö·û´óС¡¢Í£Ö¹Î»µÈ
ËäÈ»`stty`Ò²²»Ö±½ÓÏÔʾ»º³åÇø×´Ì¬£¬µ«Ëü¿ÉÒÔ°ïÖúÈ·ÈÏ´®¿ÚÅäÖÃÊÇ·ñÕýÈ·
-cat /proc/tty/driver/£ºÔÚLinuxϵͳÖУ¬`/proc/tty/driver/`Ŀ¼Ï°üº¬ÁËÓйØÖÕ¶ËÉ豸Çý¶¯µÄÐÅÏ¢
ͨ¹ý²é¿´ÕâЩÎļþ£¬¿ÉÒÔ»ñÈ¡µ½´®¿ÚÉ豸µÄͳ¼ÆÐÅÏ¢£¬Èç½ÓÊպͷ¢Ë͵Ä×Ö½ÚÊý¡¢´íÎó¼ÆÊýµÈ
ÕâЩÐÅÏ¢¶ÔÓÚÆÀ¹À´®¿Ú»º³åÇøµÄʹÓÃÇé¿ö¾ßÓÐÒ»¶¨µÄ²Î¿¼¼ÛÖµ
2.×Ô¶¨Òå³ÌÐò ±àд×Ô¶¨Òå³ÌÐòÊǼà²â´®¿Ú»º³åÇø×îÖ±½ÓµÄ·½·¨
LinuxÌṩÁ˶àÖÖ±à³Ì½Ó¿Ú£¨Èçtermios¡¢termios2¡¢ioctlµÈ£©À´·ÃÎʺͿØÖÆ´®¿ÚÉ豸
ͨ¹ý±àдC/C++³ÌÐò»òʹÓÃPythonµÈ¸ß¼¶ÓïÑÔµ÷ÓÃÕâЩ½Ó¿Ú£¬¿ÉÒÔʵʱ»ñÈ¡´®¿Ú»º³åÇøµÄ״̬ÐÅÏ¢
-ʹÓÃtermios¿â£ºtermios¿âÌṩÁ˶Դ®¿ÚÅäÖúÍ״̬²éѯµÄÈ«ÃæÖ§³Ö
ͨ¹ýµ÷ÓÃ`tcgetattr`ºÍ`tcsetattr`º¯Êý£¬¿ÉÒÔ»ñÈ¡ºÍÉèÖô®¿ÚÅäÖã»Í¨¹ýµ÷ÓÃ`TIOCGSERIAL`µÈioctlÃüÁ¿ÉÒÔ»ñÈ¡´®¿ÚÉ豸µÄÏêϸ״̬ÐÅÏ¢£¬°üÀ¨»º³åÇø´óС¡¢½ÓÊպͷ¢ËͼÆÊýµÈ
-ÂÖѯÓëÖжϣºÔÚ×Ô¶¨Òå³ÌÐòÖУ¬¿ÉÒÔʹÓÃÂÖѯ»òÖжϻúÖÆÀ´¼à²â´®¿Ú»º³åÇø
ÂÖѯ»úÖÆÍ¨¹ý²»¶Ï²éѯ»º³åÇø×´Ì¬À´¼ì²âÊý¾Ýµ½´ï£»ÖжϻúÖÆÔòÀûÓô®¿ÚÇý¶¯ÌṩµÄÖжϷþÎñ³ÌÐòÀ´´¦ÀíÊý¾Ý½ÓÊÕʼþ
¸ù¾ÝÓ¦Óó¡¾°µÄÐèÇ󣬿ÉÒÔÑ¡ÔñºÏÊʵĻúÖÆÀ´ÊµÏÖ»º³åÇø¼à²â
3.¿ªÔ´¿â ³ýÁË×Ô¶¨Òå³ÌÐòÍ⣬»¹¿ÉÒÔÀûÓÃÏÖÓеĿªÔ´¿âÀ´¼ò»¯´®¿ÚͨÐźͻº³åÇø¼à²âµÄ¹¤×÷
ÀýÈ磬pyserialÊÇÒ»¸öÁ÷ÐеÄPython¿â£¬ËüÌṩÁ˶Դ®¿ÚͨÐŵÄÈ«ÃæÖ§³Ö£¬°üÀ¨ÅäÖô®¿Ú²ÎÊý¡¢¶ÁдÊý¾Ý¡¢´¦Àí´íÎóµÈ
ËäÈ»pyserial±¾Éí²»Ìṩֱ½ÓµÄ»º³åÇø¼à²â¹¦ÄÜ£¬µ«¿ÉÒÔͨ¹ý·â×°ºÍÀ©Õ¹¸Ã¿âÀ´ÊµÏÖÕâÒ»¹¦ÄÜ
ËÄ¡¢ÓÅ»¯²ßÂÔÓëʵ¼ù 1.ºÏÀíÉèÖûº³åÇø´óС£º¸ù¾ÝÓ¦Óó¡¾°µÄÐèÇ󣬺ÏÀíÉèÖô®¿Ú»º³åÇøµÄ´óСÊÇ·ÀÖ¹Êý¾Ý¶ªÊ§ºÍÌá¸ßÊý¾Ý´«ÊäЧÂʵĹؼü
LinuxÄÚºËÔÊÐíͨ¹ýÅäÖÃÑ¡ÏîÀ´ÉèÖô®¿Ú»º³åÇøµÄ´óС£¬Èç`CONFIG_TTY_BUFFER_SIZE`
ÔÚʵ¼ÊÓ¦ÓÃÖУ¬¿ÉÒÔ¸ù¾ÝÉ豸µÄÐÔÄܺÍÊý¾Ý´«ÊäËÙÂÊÀ´µ÷Õû»º³åÇø´óС
2.¶¨ÆÚÇåÀí»º³åÇø£ºÎªÁË·ÀÖ¹»º³åÇøÒç³öºÍÊý¾Ý¶ªÊ§£¬Ó¦¶¨ÆÚÇåÀí½ÓÊÕ»º³åÇøÖеľÉÊý¾Ý
Õâ¿ÉÒÔͨ¹ýÔÚ³ÌÐòÖÐÉèÖö¨Ê±Æ÷»òʹÓÃÖжϻúÖÆÀ´ÊµÏÖ
ÔÚÇåÀí»º³åÇøÊ±£¬Ó¦×¢Òâ±£Áô¹Ø¼üÊý¾Ý²¢±ÜÃâÎóɾ
3.´íÎó´¦ÀíÓëÖØ