网上流传两个版本的DCB,经过验证有一个有问题
2011-07-31 23:06
330 查看
补充:
测试了一下使用左面的结构定义, 使用字符串(baud=1111 parity=E data=8 stop=1)构造DCB只能改变波特率,对校验方式无效
可以用构造后用xDCB.parity=E来解决
右面的结构上面的对校验位有效,但是操作errorchar之类的比较麻烦
----------------------------------------------------------------------------------------------------------------------------------
下面两个DCB结构网上流传很广
其实在XP + VB6环境下右边这个才是准确的
虽然左边这个可以用于设置某些串口参数,但是要进行一些更深入的设置就会出问题,不报错但是设置不起作用
fBitFields:
' The fourteen actual DCB bit-sized data fields within the four bytes of fBitFields can be manipulated by bitwise logical And/Or operations.
' FieldName Bit # Description
' ----------------- ----- ------------------------------
' fBinary 1 1 binary mode, no EOF check
' fParity 2 1 enable parity checking
' fOutxCtsFlow 3 0 CTS output flow control
' fOutxDsrFlow 4 0 DSR output flow control
' fDtrControl 5 0 DTR flow control type (2 bits)
' fDsrSensitivity 7 0 DSR sensitivity
' fTXContinueOnXoff 8 0 XOFF continues Tx
' fOutX 9 0 XON/XOFF out flow control
' fInX 10 0 XON/XOFF in flow control
' fErrorChar 11 1 enable error replacement
' fNull 12 1 enable null stripping
' fRtsControl 13 0 RTS flow control (2 bits)
' fAbortOnError 15 1 abort reads/writes on error
' fDummy2 16 0 reserved
Type DCB Type DCB
DCBlength As Long DCBlength As Long
BaudRate As Long BaudRate As Long
fBinary As Long fBitFields As Long
fParity As Long wReserved As Integer
fOutxCtsFlow As Long XonLim As Integer
fOutxDsrFlow As Long XoffLim As Integer
fDtrControl As Long ByteSize As Byte
fDsrSensitivity As Long Parity As Byte
fTXContinueOnXoff As Long StopBits As Byte
fOutX As Long XonChar As Byte
fInX As Long XoffChar As Byte
fErrorChar As Long ErrorChar As Byte
fNull As Long EofChar As Byte
fRtsControl As Long EvtChar As Byte
fAbortOnError As Long wReserved1 As Integer 'Reserved; Do Not Use
fDummy2 As Long End Type
wReserved As Integer
XonLim As Integer
XoffLim As Integer
ByteSize As Byte
Parity As Byte
StopBits As Byte
XonChar As Byte
XoffChar As Byte
ErrorChar As Byte
EofChar As Byte
EvtChar As Byte
End Type
测试了一下使用左面的结构定义, 使用字符串(baud=1111 parity=E data=8 stop=1)构造DCB只能改变波特率,对校验方式无效
可以用构造后用xDCB.parity=E来解决
右面的结构上面的对校验位有效,但是操作errorchar之类的比较麻烦
----------------------------------------------------------------------------------------------------------------------------------
下面两个DCB结构网上流传很广
其实在XP + VB6环境下右边这个才是准确的
虽然左边这个可以用于设置某些串口参数,但是要进行一些更深入的设置就会出问题,不报错但是设置不起作用
fBitFields:
' The fourteen actual DCB bit-sized data fields within the four bytes of fBitFields can be manipulated by bitwise logical And/Or operations.
' FieldName Bit # Description
' ----------------- ----- ------------------------------
' fBinary 1 1 binary mode, no EOF check
' fParity 2 1 enable parity checking
' fOutxCtsFlow 3 0 CTS output flow control
' fOutxDsrFlow 4 0 DSR output flow control
' fDtrControl 5 0 DTR flow control type (2 bits)
' fDsrSensitivity 7 0 DSR sensitivity
' fTXContinueOnXoff 8 0 XOFF continues Tx
' fOutX 9 0 XON/XOFF out flow control
' fInX 10 0 XON/XOFF in flow control
' fErrorChar 11 1 enable error replacement
' fNull 12 1 enable null stripping
' fRtsControl 13 0 RTS flow control (2 bits)
' fAbortOnError 15 1 abort reads/writes on error
' fDummy2 16 0 reserved
Type DCB Type DCB
DCBlength As Long DCBlength As Long
BaudRate As Long BaudRate As Long
fBinary As Long fBitFields As Long
fParity As Long wReserved As Integer
fOutxCtsFlow As Long XonLim As Integer
fOutxDsrFlow As Long XoffLim As Integer
fDtrControl As Long ByteSize As Byte
fDsrSensitivity As Long Parity As Byte
fTXContinueOnXoff As Long StopBits As Byte
fOutX As Long XonChar As Byte
fInX As Long XoffChar As Byte
fErrorChar As Long ErrorChar As Byte
fNull As Long EofChar As Byte
fRtsControl As Long EvtChar As Byte
fAbortOnError As Long wReserved1 As Integer 'Reserved; Do Not Use
fDummy2 As Long End Type
wReserved As Integer
XonLim As Integer
XoffLim As Integer
ByteSize As Byte
Parity As Byte
StopBits As Byte
XonChar As Byte
XoffChar As Byte
ErrorChar As Byte
EofChar As Byte
EvtChar As Byte
End Type
相关文章推荐
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- 本人第六个练手作品 xfmpc 一个xfce4下的mpc前端[原创] 一共有两个版本
- Java写的一个用户口令加密,验证(有问题,自己解决不了)
- 男人必看:最近在网上流传甚广的一个帖子
- c++实现一个比较两个string类型的版本号的小demo
- 网上找的一个表单验证类及使用例子(稍微修改了下)
- 以前在2003中用过一个时间控件特别好用,今天又找到了2005版本的,特别好用。刚才又加了个验证控件。
- 白孩儿--一个网上流传的故事[生活感悟]
- HashMap和Hashtable的区别(网上流传版本的修正版)
- 网上流传的一个很牛的日期判断正则表达式的问题,2-29判断问题解决
- 一个电脑安装两个jdk版本
- 迅雷创始人程浩:创业公司5招做好内部创新(组建小型敢死队:一共3个人,一个产品经理,两个研发;腾讯做不做这个项目是一个伪命题;让用户来验证,而不是相反 good)
- 《c primer pius》第六章第14题,发现网上好多都有问题,编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- 程序员,不要让自己做兔子(updated) 网上最近流传的一个笑话,关于兔子,狼还有一只老虎的,故事 我就是想打你了,还需要什么理由吗?谁让你是兔子 项目经理是这样当的
- 一个网上流传的猫叫导致的联动的例题的解决方案
- 用同一个工程创建两个不同版本的应用
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- 某公司的一道面试题:最新版本号;输入两个表示版本号的字符串,返回版本较大的一个
- 编程:编写一个截取字符串的函数,(网上流传的答案有的是错的)输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4