⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2.txt

📁 的问题.派尔高协议,控制左转右转时,出现问题.其他功能好用.我用DELPHI写的程序,在MOUSEDOWN中, str := chr($FF)+chr($01)+chr($00)+chr($04)+c
💻 TXT
字号:
编写云台控制程序

  有些朋友很关心云台控制程序的编写。在这里我把我工程中根据Pelco协议编写的代码放在这里,供各位朋友参考。如有不同的见解请留言讨论。

  编写云台控制程序的第一步要搞清楚所购买的云台的解码器的控制协议,如使用比较多的Pelco,YAAN协议等.协议的各个部分要认真分析.如果工程需要的只是部分的功能,如:上下左右控制.那只把协议相应的部分实现即可.

  本文实现Pelco协议的功能,首先要下载Pelco协议.下载PELCO协议.rar.然后选择使用哪种编程工具,如c,vc,c#.针对不同的语言稍微改变就可以.同时也要考虑程序运行的平台,比如是在计算机上通过串口控制云台还是通过DSP的串口控制云台.因为在这两个平台上往串口发送消息的命令形式不同.下文分别叙述.

  在VC#这个编程平台上,用C#语言实现pelco协议如下:Pelco_P_D.rar.建立好了协议的主体就可以建立一个控制窗口界面实现各种控制功能.比如我要建立上下左右的控制,那就建立4个控制按纽并分别实现对应的消息.下面是实现的控制云台向上运动的程序:
private void up_Click(object sender, EventArgs e)
        {
            addressin = Byte.Parse((testBox_address.Text).ToString());
            speedin = Byte.Parse((textBox_tilespeed.Text).ToString());
            messagesend = pelco_d.CameraTilt(addressin, Pelco_D.D.Tilt.Up, speedin);
            try
            {
                //write line to serial port
                serialPort.Write(messagesend, 0, 7);
                sendstatus.Text = "UP";
               
                //clear the text box
                // textBox.Text = "";
            }
            catch (System.Exception ex)
            {
                baudRatelLabel.Text = ex.Message;
            }
          
        }     

  其他的各种功能参考上面的程序即可实现pelco协议的各种功能.

  在比如要在DSP平台上实现控制云台的程序.比如针对合众达的DM642平台.除了要实现Pelc协议的主体之外(参考Pelco_P_D.rar.),要把DM642发消息给UART口的命令搞清楚即可.下面的程序是控制云台向上运动一小步:
CameraTilt(1, Up, msg->speed,pelco_D_Data);//解析向上运动的命令
for(i=0;i<7;i++)SEEDDM642_UART_rset(SEEDuartHandleA, //发送SEEDDM642_UART_THR, (pelco_D_Data[i] & 0xff));
  for(i=0;i<7;i++)SEEDDM642_UART_rset(SEEDuartHandleA, SEEDDM642_UART_THR, (pelco_D_Data[i] & 0xff));
  CameraStop(1);//停止

  以上就是在两种平台上控制云台运动的编程步骤.如有不同见解请讨论.                


 
 

阅读全文(3833) | 回复(5) | 引用(57)   
 





回复:编写云台控制程序  【举报此回复】
proglife发表评论于2006-9-25 15:07:48  
老师,您好!
和您在MSN聊过关于云台控制的问题.派尔高协议,控制左转右转时,出现问题.其他功能好用.我用DELPHI写的程序,在MOUSEDOWN中, str := chr($FF)+chr($01)+chr($00)+chr($04)+chr($0F)+chr($00)+chr($14);
  MSComm1.output := str;

在CLICK事件中: str := chr($FF)+chr($01)+chr($00)+chr($00)+chr($00)+chr($00)+chr($01);
   MSComm1.output := str;

可是大多数时候,云台不停;偶尔能停住/大家不知遇到过这个问题没有?请帮忙,谢谢!
 

个人主页 | 引用 | 返回   
 





回复:编写云台控制程序  【举报此回复】
barongeng发表评论于2006-9-25 20:47:35  
你好:我觉得存在的问题是发送命令时间间隔可能存在问题。比如发送命令让云台向左转,然后发送停止命令让云台停止,这中间需要一个时间间隔。
我的建议是:
1。先使用串口精灵发送命令调试。看看命令格式没有问题。
2。把时间间隔放长。
3。多次发送命令。比如:发送2次左转,然后发送
     2次停止命令。
4。写的程序注意逻辑。你的MOUSEDOWN  CLICK  you wen ti
 
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -