我用的是三星的6410芯片,WinCE6.0系统,串口的驱动基本上是三星写的(核心的东西都没有改),现在我希望是能够在串口中收到数据的时候,能够读取到奇偶校验位的值,是1或是0,还有就是在发送数据的时候,我能够设定这个奇偶校验位的值是1或者0,不知道该怎么做呢???
额外,先问下,当我们的应用程式打开串口的时候,会设置这个校验方式,如果设定为无校验的时候,那么串口在发送数据的时候是不是就不会发送这个位,也就是数据发送完,就之直接发送停止位?如果设定校验位为奇偶校验或其他的校验的时候,是否是在发送完数据位后会接着发一位校验位,然后才是停止位???
仅仅是一种设想,因为我之前做NXP的ARM还有51的时候都是可以直接设置串口模式的。
串口设置中的DCB结构体中有一个Parity成员变量可以来设置奇偶校验,使用GetCommState()首先获取DCB的默认参数,然后修改一些成员变量,在使用SetCommState()设置串口。
UART发送的数据格式是可以编程的,看一下文档,这样说“包含一个开始位,5到8个数据位,一个可选的奇偶校验位,1到2个停止位”。假如你发送的数据位为8位,使用的是奇校验,停止位为1,那么发送一个数据打包后就应该十一位。所以在接收的那一端,得到的数据应该是十一位,不过是因为串口已经处理了,给出的是数据段的内容而已。理论是这样,不过没有捕捉过真实的数据情况。