用VB做的云台控制程序

zhjie13 2010-01-24 10:07:33
我用VB编了个控制云台的程序,请大师帮着看看,
'PELCD_P 解码器控制协议
'向上:A0 01 00 08 00 40 AF 46 A0 01 00 00 00 00 AF 0E
'向下:A0 01 00 10 00 40 AF 5E A0 01 00 00 00 00 AF 0E
'向左:A0 01 00 04 40 00 AF 4A A0 01 00 00 00 00 AF 0E
'向右:A0 01 00 02 40 00 AF 4C A0 01 00 00 00 00 AF 0E
'变倍(wide)大:A0 01 00 40 00 00 AF 4E A0 01 00 00 00 00 AF 0E
'变倍小(tele):A0 01 00 20 00 00 AF 2E A0 01 00 00 00 00 AF 0E
'调焦大(far): A0 01 01 00 00 00 AF 0F A0 01 00 00 00 00 AF 0E
'调焦小(near):A0 01 02 00 00 00 AF 0C A0 01 00 00 00 00 AF 0E
'光圈小(close):A0 01 08 00 00 00 AF 06 A0 01 00 00 00 00 AF 0E
'光圈大(open):A0 01 04 00 00 00 AF 0A A0 01 00 00 00 00 AF 0E

Option Explicit
Dim sData() As Byte
Dim OverButton As Boolean

Private Sub camclose_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H8
sData(3) = &H0
sData(4) = &H0
sData(5) = &H0
sData(6) = &HAF
sData(7) = &H6
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camdown_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H10
sData(4) = &H0
sData(5) = &H40
sData(6) = &HAF
sData(7) = &H5E
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camfar_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H1
sData(3) = &H0
sData(4) = &H0
sData(5) = &H0
sData(6) = &HAF
sData(7) = &HF
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camleft_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H4
sData(4) = &H40
sData(5) = &H0
sData(6) = &HAF
sData(7) = &H4A
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camnear_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H2
sData(3) = &H0
sData(4) = &H0
sData(5) = &H0
sData(6) = &HAF
sData(7) = &HC
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camopen_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H4
sData(3) = &H0
sData(4) = &H0
sData(5) = &H0
sData(6) = &HAF
sData(7) = &HA
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camright_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H2
sData(4) = &H40
sData(5) = &H0
sData(6) = &HAF
sData(7) = &H4C
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camtele_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H20
sData(4) = &H0
sData(5) = &H40
sData(6) = &HAF
sData(7) = &H2E
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE

MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
MSComm1.PortOpen = False

End Sub

Private Sub camup_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H8
sData(4) = &H0
sData(5) = &H40
sData(6) = &HAF
sData(7) = &H46
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub



Private Sub Camwide_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H40
sData(4) = &H0
sData(5) = &H0
sData(6) = &HAF
sData(7) = &H4E
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE

MSComm1.OutBufferCount = 0
MSComm1.Output = sData() '...按下命令钮,发送命令
MSComm1.PortOpen = False
End Sub

Private Sub Form_Load()
'设置com
MSComm1.CommPort = 4
MSComm1.Settings = "9600,n,8,1"
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0
MSComm1.RThreshold = 1
MSComm1.InputMode = comInputModeBinary '设置为2进制接收,是接收&H00 - &HFF必要条件
MSComm1.PortOpen = True
OverButton = True
MSComm1.InputLen = 0
End Sub

不知这样写是否合适,实际调试时,按camtele按钮提示“8018”错误,但小弟没有找到错误所在,
在现场调试时,好像除了向下能动作外,其它都没有反应,不知何原因。
...全文
273 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjie13 2010-01-26
  • 打赏
  • 举报
回复
假如有6六command_Click 都是发相同的“A0 01 00 00 00 00 AF 0E " ,应该如何简化写,而不用这样:
Private Sub camtele_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H20
sData(4) = &H0
sData(5) = &H40
sData(6) = &HAF
sData(7) = &H2E
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE

MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令

End Sub
请教!
guyehanxinlei 2010-01-25
  • 打赏
  • 举报
回复
UP
chinaboyzyq 2010-01-25
  • 打赏
  • 举报
回复
在窗体上放一个picturebox(图片框),把图片放入picturebox里然后,然后在窗体Resize()事件里改变它的大小。
其它控件放入Picturebox里(即picturebox做其它控件的容器)
Private Sub Form_Resize()
picture1.move 0,0,me.width,me.height
End Sub
zhjie13 2010-01-24
  • 打赏
  • 举报
回复
谢谢!
我在窗体加了一个图片 但这图片如何能做到和窗体大小变化同步呢?
chinaboyzyq 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhjie13 的回复:]
Private Sub camup_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub

Private Sub camup_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
End Sub
这样行吗?
[/Quote]

一个按钮的鼠标事件触发顺序是:按下鼠标先触发MouseDown,松开鼠标,先触发Click,然后再触发MouseUp,因为中间执行click事件,我想这样并不一定符合你的要求,再加一个按钮来做这部分吧。
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mybag1 的回复:]
什么是云台啊
[/Quote]

监控摄像头的控制系统
zhjie13 2010-01-24
  • 打赏
  • 举报
回复
Private Sub camup_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
ReDim sData(7)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H8
sData(4) = &H0
sData(5) = &H40
sData(6) = &HAF
sData(7) = &H46
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
End Sub

Private Sub camup_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H0
sData(4) = &H0
sData(5) = &H0
sData(6) = &HAF
sData(7) = &HE
MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...弹起命令钮,发送命令
End Sub
这样行吗?
zhjie13 2010-01-24
  • 打赏
  • 举报
回复
应该是鼠标被按下事件和鼠标弹起事件是如何?我需要在鼠标被按下时通过com口发送一串16进制的数据,在鼠标弹起时再发送一串16进制数据,而VB我看到有单击事件,请教了!
zhjie13 2010-01-24
  • 打赏
  • 举报
回复
谢谢! 我大概知道问题的原因了,请教一下,鼠标按下和弹出事件是如何的?
chinaboyzyq 2010-01-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhjie13 的回复:]
   不知这样写是否合适,实际调试时,按camtele按钮提示“8018”错误,但小弟没有找到错误所在,
  在现场调试时,好像除了向下能动作外,其它都没有反应,不知何原因。
[/Quote]
Private Sub camtele_Click()
ReDim sData(15)
sData(0) = &HA0
sData(1) = &H1
sData(2) = &H0
sData(3) = &H20
sData(4) = &H0
sData(5) = &H40
sData(6) = &HAF
sData(7) = &H2E
sData(8) = &HA0
sData(9) = &H1
sData(10) = &H0
sData(11) = &H0
sData(12) = &H0
sData(13) = &H0
sData(14) = &HAF
sData(15) = &HE

MSComm1.OutBufferCount = 0
MSComm1.Output = sData '...按下命令钮,发送命令
' MSComm1.PortOpen = False'这句关闭了端口,再发送数据时就错了,删除它再试
End Sub
小五义 2010-01-24
  • 打赏
  • 举报
回复
什么是云台啊

7,764

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧