通过VFP编程让“POS收银机显示屏”显示数据中遇到的问题如何解决?
有一台“好易通TM”牌的pos收银机,安装了用VFP编的商品销售运行软件,因供应商未提供VFP编程的屏显程序,所以采用了通用的“POS收银机显示屏”显示数据的屏显程序如下:
diyledform=createobject('form')
diyledform.addobject("MSComm1","olecontrol","mscommlib.mscomm")
diyledform.MSComm1.commport=1
diyledform.MSComm1.settings="2400,S,8,1"
if diyledform.mscomm1.portopen=.f. then
diyledform.mscomm1.portopen=.t.
endif
diyledform.mscomm1.outbuffercount=0
PDStr=Chr(27)+Chr(81)+Chr(65)+"1234.56"+Chr(13)
diyledform.MSComm1.Output = PDStr
diyledform=createobject('form')
diyledform.addobject("MSComm1","olecontrol","mscommlib.mscomm")
diyledform.MSComm1.commport=1
diyledform.MSComm1.settings="2400,S,8,1"
if diyledform.mscomm1.portopen=.f. then
diyledform.mscomm1.portopen=.t.
endif
diyledform.mscomm1.outbuffercount=0
PDStr=Chr(27)+Chr(115)+”2”
diyledform.MSComm1.Output = PDStr
(说明:以上为显示总计:1234.56的屏显程序,在多台其他型号的POS收银机上运行正常。)
但在该台“好易通TM”牌的pos收银机上运行时出现了以下错误提示:
1、在运行到第6行“diyledform.mscomm1.portopen=.t.”时出现了出错提示:
“ OLE IDispatch 异常代码 O 出自WSComm:port already open. ”
2、在运行到第9行“PDStr=Chr(27)+Chr(81)+Chr(65)+"1234.56"+Chr(13)”时出现了出错提示:
“ 函数参数的值、类型或数目无效. ”
3、在运行到最后一行“diyledform.MSComm1.Output = PDStr ”时出现了出错提示:
“ OLE IDispatch 异常代码 O 出自WSComm: Operation valid only when the pot is open .”
敬向电脑专家请教,该如何编程,才能使这台“好易通TM”牌的pos收银机的显示屏正确显示数据,不胜感激!
[解决办法]
第一个错误是原始错误, 因为串口打不开, 已经被其他程序打开, 看一下是否运行了其他程序或运行了2遍
[解决办法]
是因为另一个软件打开占用了串口。
必须关闭另一个软件,同样道理,你的软件能用时,另一个软件就打不开串口。
[解决办法]
只能强制关闭另一个软件(你搜一下强制关闭其他软件的方法),还不知道这样能否释放串口,有待测试。
你的 VFP 软件用完了串口记得关闭串口即可。
总之,多个程序用一个串口,这不是长久之计。
完美的解决方法:
1、再加一个串口,再加一个屏显,这样成本会有增加。
或
2、如果另一个软件可以修改话,把另一个软件写屏显示代码改为写到一个表中,
然后你的 VFP 软件也改写到这个表中,最后再做一个专门读这个表,然后写屏显示的程序。