balloonman2002兄及各位高手,帮助看看串口通讯的问题
balloonman2002兄,可以插入了,不过键值应该没有@="
但我用下面的代码,无法读取呀,是不是portopen 设为true 后,读卡器read灯就应该亮的
string ls_a
ole_1.object.CommPort = 1
ole_1.object.settings = "9600,n,8,1"
ole_1.object.inputlen = 0
ole_1.object.inbuffersize = 1024
ole_1.object.inbuffercount = 0
ole_1.object.portopen = true
do
yield()
loop until ole_1.object.inbuffercount>=1
ls_a = ole_1.object.input
messagebox("",ls_a)
ole_1.object.portopen = false
问题点数:100、回复次数:14Top
1 楼sdycy(冬冬)回复于 2004-12-03 13:07:49 得分 10
如果是读卡器的话,不建议用上述方法,不是太可靠
建议直接使用读卡器厂商的DLL(一般厂家都会提供)
或者自己写DLLTop
2 楼lzp_lrp(lzp)回复于 2004-12-03 13:11:34 得分 10
现在的厂商一般都有自己的控件(ocx),你直接找厂商要,然后根据他们提供的资料进行操作即可
用微软的OCX,代码很容易出问题
建议找厂商要OCX,呵呵Top
3 楼nsqsmile(阿南)回复于 2004-12-03 13:50:03 得分 0
这是银行的刷卡机,他们都不知道是哪个公司生产的。
我们给用户实现银行代扣业务,需要把帐号读出来,向厂商要是不可能的了,银行的系统还不桎道是谁做的,并且肯定是买的读卡器厂商的,又要转一次Top
4 楼renwanly(★★★★)回复于 2004-12-03 15:24:18 得分 5
没做过,关注Top
5 楼nsqsmile(阿南)回复于 2004-12-03 15:55:05 得分 0
救命呀兄弟们Top
6 楼lzp_lrp(lzp)回复于 2004-12-03 18:48:59 得分 10
你用了上面代码以后,有什么反应?是messagebox里是空的,还是程序出错了?Top
7 楼nsqsmile(阿南)回复于 2004-12-03 20:07:14 得分 0
一直执行循环。
Top
8 楼nsqsmile(阿南)回复于 2004-12-03 20:09:28 得分 0
有没有搞过银行卡的刷卡机的,我问了一下别人,说不能直接通过com读Top
9 楼progrose(编程小子)回复于 2004-12-03 20:55:43 得分 5
串口中数据是不断的, 循环就对了。应该在程序中判断并适时退出循环。Top
10 楼nsqsmile(阿南)回复于 2004-12-03 21:48:32 得分 0
to progrose(初级程序员)
until ole_1.object.inbuffercount>=1 这样退出不行吗?Top
11 楼lzp_lrp(lzp)回复于 2004-12-04 18:09:54 得分 30
不能这样循环,你这么写试试
do
yield()
ls_a = ole_1.object.input
loop until len(ls_a) >= 1
我在做串口取数的地方,从没用过
do
yield()
loop until ole_1.object.inbuffercount>=1
建议你去掉,按我说的方法,再试试
Top
12 楼zhangdatou(猪头)回复于 2004-12-05 09:48:28 得分 10
我来学习的Top
13 楼xuweiqun(打雷啦)回复于 2004-12-05 13:32:45 得分 10
应该是协议不对,如果协议不对的话就什么也接收不到。
ole_1.object.handshaking = 1 (none)
= 2 (XON/XOFF)
= 3 (RTS/CTS)
= 4 (XON/XOFF AND RTS/CTS)Top
14 楼xuweiqun(打雷啦)回复于 2004-12-05 13:34:36 得分 10
建议接收字符在ONCOMM事件中写
IF ole_1.object.commevent = 2 then //
is_temp = ole_1.object.input
is_tempstr = is_tempstr+is_temp
end ifTop




