首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > VFP >

通过VFP编程让“POS收银机显示屏”显示数据中遇到的有关问题怎么解决

2013-03-16 
通过VFP编程让“POS收银机显示屏”显示数据中遇到的问题如何解决?有一台“好易通TM”牌的pos收银机,安装了用VF

通过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遍
[解决办法]

引用:
trainee老师:
   谢谢您的指点,在该台电脑上还装有另一个SQL销售软件,该软件的屏显能正常显示,但运行VFP运行软件时屏显就出现了以上的出错提示,是不是与另一个SQL销售软件已设置了屏显有关?在这种情况下,如何编程,可以使VFP运行软件的屏显能正常显示。敬请指导,不胜感激!

是因为另一个软件打开占用了串口。
必须关闭另一个软件,同样道理,你的软件能用时,另一个软件就打不开串口。
[解决办法]
只能强制关闭另一个软件(你搜一下强制关闭其他软件的方法),还不知道这样能否释放串口,有待测试。
你的 VFP 软件用完了串口记得关闭串口即可。
总之,多个程序用一个串口,这不是长久之计。
完美的解决方法:
1、再加一个串口,再加一个屏显,这样成本会有增加。

2、如果另一个软件可以修改话,把另一个软件写屏显示代码改为写到一个表中,
然后你的 VFP 软件也改写到这个表中,最后再做一个专门读这个表,然后写屏显示的程序。

热点排行