AT89S51单片机全地形八足机器人机械手的设计(12)
时间:2017-01-17 19:45 来源:毕业论文 作者:毕业论文 点击:次
以下是Mscomm控件的主要属性和方一法: (1) Commport:设置或返回串行端口号,其取值范围为1---99,缺省为1。 (2) Setting:设置或返回串行端口的波特率、奇偶校验位、数据位数、停止位。如:Mscomm.Setting="9600,N,8,1 " (3) PortOpen:打开或关闭串行端口,格式为:Mscomm.PortOpen=TRUE/FALSE。 (4) InBufferSize:设置或返回接收缓冲区的大小,缺省为1024字节。 (5) InBufferCount:返回接收缓冲区内的等待读取的字节个数,可通过设置该属性为0来清除接收缓冲区。 (6) RThreshold:该属性为一阀值,它确定当按收缓冲区内字节个数达到或超过该值后就产OnCamm事件。 (7) InputLen:设置或返回接收缓冲区内用Input读入的个数。若取0,则Input读取整个缓冲区的内容。 (8) Input:该属性表示从接收缓冲区移走一串字符。 (9) OutBufferSize:设置或返回发送缓冲区大小,缺省为512字节。 (10) OutBufferCount:返回发送缓冲区内等待发送的字符数可用来清空缓冲区。 (11) Output:向发送缓冲区传送一字符串。 (12) EofEnable:若置TRUE,则当输入出现EOF,就停止输入产生OnComm事件。 如果在通信过程中发生错误或事件,就会引发OnComm事件并改变属性值,由CommEvent属性代码反映错误类型,在通信程序的设计中可根据该属性值来执行不同的操作,以下是部分属性常数值及其含义: (1)ComEvSend:其值为1,发送缓冲区的内容少于SThreshold指定的值。 (2)ComEvReceive:其值为2,接收缓冲区内字符数达到RThreshold值,该事件在缓冲区中数据被移走前将持续产生。 本设计中端口号为6,8个数据位,无奇偶校验,波特率为9600,1个停止位,串口的初始化程序为[17]: Private Sub Form_Load() Comm1.CommPort = 6 Comm1.Settings = "9600,n,8,1" Comm1.InputLen = 0 Comm1.InBufferSize = 512 Comm1.InBufferCount = 0 Comm1.OutBufferCount = 0 Comm1.RThreshold = 1 End Sub 串口给下位机发送命令时,由于控制命令是以字符串的形式输入文本框的,比如命令机械手的目标点X轴坐标为100mm,由于“100”是以字符串的形式输入文本框的,如果直接发送则需要发送三次,而设计时希望51单片机只需接收一次就可以将“100”接收,所以发送时得先把字符串转换成十优尔进,再把十优尔进制数以数组的形式传给下位机,具体转换和传输过程如下: Dim buffer(0 To 9) As Byte buffer(0) = "&H" & Hex(onoff) buffer(1) = "&H" & Hex(Val(Textdir1.Text)) buffer(2) = "&H" & Hex(Val(Textdir2.Text)) buffer(3) = "&H" & Hex(Val(Textdir3.Text)) buffer(4) = "&H" & Hex(Val(Textdir4.Text)) buffer(5) = "&H" & Hex(Val(Textrate.Text)) buffer(6) = "&H" & Hex(50 * Val(Textcircle1.Text)) buffer(7) = "&H" & Hex(50 * Val(Textcircle2.Text)) buffer(8) = "&H" & Hex(50 * Val(Textcircle3.Text)) buffer(9) = "&H" & Hex(50 * Val(Textcircle4.Text)) Comm1.Output = buffer() 4.1.3 各电机控制信号的算法 机械手操控方式有两种,一种是操作人员直接给出各电机的控制型号,另一种为操作人员只给出物体的坐标,控制型号由上位机通过算法得出。当处于第二种运行模式时,机械手最终目的是到达一个目标点抓取物体,然后返回原点。目标点的位置坐标是由操作人员通过测量给出并输入到上位机界面,VB通过一定的算法编程可以准确算出每个步进电机应该转动的角度,具体计算时,得先建立坐标系,坐标系的具体建立方法如图4.2,设定图示的旋转方向为电机的正转方向[18]。 (责任编辑:qin) |