不知道如何表述标题,但我想做的是用我的 Linux PC 测试我的微控制器,以确保数据正确。经过几个小时的搜索,我发现 stty 命令可以更改通过串行端口管理数据的方式,并且事实证明,默认情况下,如果从端口接收到 xon 或 xoff 字符,则它们不会显示。起初我以为我的计算机速度太慢,以至于在 57.6Kbps 时丢失了字符,但事实并非如此。
以前,当我在 QuickBasic for DOS 中玩串行鼠标时,我可以使用以下命令来启动串行端口:
OPEN "com1:1200,n,7,1,op0" for binary as #1
所以我现在想做的是用 C 创建一些简单的东西,让我能够以最原始的模式打开串行端口。我想要它,以便我提供给它的任何数据都不会被修改地发送给它。我也想接收未经修改的数据。因此,如果控制器决定发送一个 PC 会识别为特殊控制代码的字符,我仍然想看到该字符,而不是仅仅因为一个字符与控制代码匹配而让 PC 变得有趣。
我想到的一个想法是创建 stty 程序的一个分支,并使用添加到程序中的几乎每个(50+?)参数,这使得程序堆栈空间的要求有点高。
我想到的另一个想法是使用端口地址本身进行直接 I/O(使用 inb 和 outb),但我不确定内核是否会在数据到达端口之前通过其他任何东西运行这些命令,但我会而是将其用作最后一个选项,以防我更换计算机并且串行端口值发生变化(或成为通过 USB 转串行转换器硬件创建的串行端口)。
因此,我可以使用 C 中的函数(不需要标准 Linux 发行版中未包含的特殊库)来代替 inb 和 outb 以及那些变体(如 inw),并且无需在程序中指定 50 多个参数来执行 stty强制串行端口设备作为原始设备,以便我可以在其上执行任何 I/O,而无需内核修改或删除数据?
None
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)