把2个串口用交叉线连起来,假设两个串口分别为/dev/ttyS0和/dev/ttyS1,则可以直接在一个shell执行cat /dev/ttyS0,然后在另外一个shell 执行echo "test." >/dev/ttyS1,如果两个串口都是好的,则执行cat /dev/ttyS0会输出'test."如果不行,则可用cat /proc/interrupts看一下是否产生了中断,也可用setserial查看串口设置


简单总结一些串口程序调试的方法

最近在做一个串口发送数据的程序,有时候在办公室写有时候在家里。在办公室都是用串口连接两台电脑来调试串口程序。因为电脑多,用一根线连起来,这边发那 边收,收的一边xp里用串口调试助手,很方便。回到家就不那么方便了,以前只有一台笔记本,现在多了一台台式机。虽然机器多了,但是有时候又忘记把串口线 带回来,也不方便。我的程序是linux qtembedded的,到现在用过几种其他方法调试串口数据发送,简单总结一下。
1.单机的 时候。用ln -s output /dev/ttySAC2 把程序里用到的串口ttySAC2连到一个文件,写数据进去之后,再用xxd打开这个文件,看16进制输出。缺点是看结果慢一拍,好处是最简单。xxd是 linux命令行查看16进制的工具,可以在vi中调用,也可以直接在命令行使用。
2.两台机器连接,台式机向笔记本发送数据。那时候还 不知道下面说的qtserialport-terminal。笔记本打开一个终端,用cat /dev/ttyUSB0|xxd输出接收到的数据,也是可以直接看到16进制输出的。但是似乎默认有缓存,不是每次发的数据都能及时显示出来。
3. 就是今天发现的方法。在virtualbox里装的xp,设置里enable serialport,选择host device,/dev/ttyS0。但是启动后找不到串口,自己手动添加一个,IRQ4,3F8,出来的是com3。(显示com1被使用,不知道原 因)然后打开串口调试助手,在宿主机linux里运行程序,发送数据到/dev/ttyS0;xp里用串口调试助手就可以收到数据了。这样也不需要连线, 一台机器就可以调试,马上可以看到接受的数据,也是个不错的办法。
另外,在Archlinux的aur里,有一个用qt和 qextserialport和多线程方式实现的qtserialport- terminal,和串口助手差不多。但是没有16进制显示,默认不能用ttyUSB,但是可以选择很多种字符编码。等有时间了,可以改一下,加上16进 制和usb串口。 看看这个程序的源码,就可以很容易写出多线程的串口程序。

Logo

更多推荐