不确定如何标题,但我想要做的是用我的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程序创建一个fork并使用几乎每个(50+?)参数添加到程序中,这使得程序堆栈空间的要求有点高。
我想到的另一个想法是使用端口地址本身进行直接I / O(使用inb和outb)但是我不确定内核是否会在数据到达端口之前通过其他任何命令运行这些命令,但是我宁愿使用它作为最后一个选项,以防我更换我的电脑和串口值改变(或成为通过USB转串口转换器硬件的串口)。
所以不是inb和outb以及那些变体(比如inw),并且在我的程序中没有执行stty并指定50多个参数,CI中的函数是否可以使用(不需要标准linux中不包含的特殊库)分发)强制串口设备作为原始设备,这样我可以在没有内核修改或删除数据的情况下对其进行任何I / O操作?