to zdingyun(): 对于你说的"安装通信程序的机器缺少同版本的VB运行库及相应的ActiveX控件的*.Ocx文件",好象不是这个问题,因为安装程序在我自己机子上安装后通讯也是不成功的.还有,就是怎么确定安装机子上少了同版本的VB运行库及相应的ActiveX控件的*.Ocx文件呢?哪里可以看到呢?郁闷啊,都一个星期了还没解决,我都不知道是哪里出了问题啊!555555
yyxa82326(petrel(` v `)) 从你叙述看,代码在VB编译环境下能运行,,编译成EXE文件,然后生成打包文件,安装在你有VB编译环境的机器就不能运行。 请检查EXE文件的其他相关文件的路径是否与代码所处的路径是否一致。 不知你是否可将代码贴出,便于分析。
对于你说的"安装通信程序的机器缺少同版本的VB运行库及相应的ActiveX控件的*.Ocx文件",好象不是这个问题,因为安装程序在我自己机子上安装后通讯也是不成功的.还有,就是怎么确定安装机子上少了同版本的VB运行库及相应的ActiveX控件的*.Ocx文件呢?哪里可以看到呢?郁闷啊,都一个星期了还没解决,我都不知道是哪里出了问题啊!555555
从你叙述看,代码在VB编译环境下能运行,,编译成EXE文件,然后生成打包文件,安装在你有VB编译环境的机器就不能运行。
请检查EXE文件的其他相关文件的路径是否与代码所处的路径是否一致。
不知你是否可将代码贴出,便于分析。
还有我用VB自带的打包工具打包后在安装过程中提示"丢失数据文件"
邮箱地址已发消息给你,请查收.
代码已经发给你了,有劳你看看,谢谢!
邮件收到
请简单叙述通信协议
Private Sub Form_Load()
'
If 0 Then
'自我测试时打开
mscom.CommPort = 2
mscom.Settings = "9600,s,8,1"
mscom.InBufferSize = MODEM_BUFF_SIZE
mscom.InBufferCount = 0 '清空接收缓冲区
mscom.InputLen = 0 '用input属性读取将一次读取缓冲区的全部内容
mscom.InputMode = comInputModeBinary
mscom.RThreshold = 1 '只要收到一个字符都将产生中断
mscom.PortOpen = True
End Sub '
End If
End Sub
及timerTest的
Private Sub timerTest_Timer()
'
buffer = arr
mscom.Output = buffer
'
End Sub
及整个工程代码中未见COM2口打开,所以你用串口调试工具打开COMM2口可以收到程序发来的数据,而未发生冲突。如果程序代码中打开了COM2,串口调试工具就无法打开COMM2。
做了几个尝试得出一个现象就是,无论在VB编译的环境下,或者在直接运行生成的EXE文件,或者打包安装,用串口调试工具(即打开comm2口)通讯都是成功的.如果用硬件装置通讯的话,直接运行生成的EXE文件,或者打包安装通讯就不成功了!
这样是不是就可以排除打包出错的原因呢?我想可能是程序与硬件的通讯时间上的问题,但是在VB编译的环境下通讯又是成功的,这到底怎么解释啊!头都N个大了!!!!!!!
程序正常运行的时候是不用到COMM2口的,COMM2只是用来自我测试的
通讯协议简单点说的话就是通过前台软件给硬件装置发命令,硬件装置收到命令后作出相应的动作,并给前台软件发一个标志通知前台
什么是VB的调试信息啊? 你说的延时是哪里的延时,是发送命令的延时,还是发送命令之后等待的延时?在哪里加延时啊?
http://community.csdn.net/Expert/topic/5458/5458019.xml?temp=.5942041
的讨论。
今较仔细看了你给的主窗体代码,使用大量的WIN API函数。
主界面的图形使用API函数画,而不用VB提供的控件,使得代码较难查错,不便于维护。
不知此代码是你自己写的吗?
建议设备的图形控制界面完全可由BMP或JEPG图加载。由IMAGE控件作为控制命令的受体。
这样窗体界面在设计时就能一目了然,便于维护。
调试你的程序代码,发送命令正常,应不了解通信协议,而无法测试接收代码。
试了下将VB的工程属性中编译成P代码(一般是本地代码),结果好了.
不知道是否合适你的这个问题