Sub senditem(ByVal item As Integer)
On Error Resume Next
DoEvents
Socket1.SendData "|" & List1.List(item) & "^"
DoEvents
End Sub
对于数据的接收方而言,其Socket始终处于监听状态,当有数据到达时立即接收数据并进行分类处理,如果是命令信息,如清除绘图区命令,则会立即执行,如果是绘图信息(包括G代码仿真)则进一步解读,然后在绘图区中由绘图程序来执行,代码如下:
Private Sub Socket2_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim dat As String
Dim tempchr As String
Socket2.GetData dat ‘接收数据
For n = 1 To Len(dat)
tempchr = tempchr & "^"
e = e + 1
Next n
For n = 1 To e
If dat = "cls^" Then Picture1.Cls ‘清屏指令
If dat = "" Then
For n = 0 To List2.ListCount - 1
decode List2.List(0) ‘解读绘图信息
List2.RemoveItem 0
Next n
…
整个同步过程中的绘图信息包括直线、圆弧、圆和徒手绘几种形式,首先根据得到绘图信息进行分类,然后调用相应的绘图函数进行绘图,其代码如下:
Sub decode(ByVal dat As String)
… ‘变量定义
For n = 1 To Len(dat)
tempchr = Mid(dat,n,1) ‘提取字段
Select Case tempchr
Case ","
x1 = xx1:cur = "y1"
Case "<"
y1 = yy1:cur = "x2"
… ‘解读第一字段
Select Case cur
Case "x1"
xx1 = xx1 & tempchr
Case "y1"
yy1 = yy1 & tempchr
… ‘解读第二字段
End Select
End Select
Next n
… ‘绘制直线
Picture1.Line (x1,y1)-(x2,y2),vbBlue
… ‘绘制圆弧或圆
Picture1.Circle ((x + XCent) + (LstZ / ZAsp),(y - YCent) - (LstZ / ZAsp)),RAD,RGB(Col1,Col2,Col3),Angle * 2 * PI / 360,Angle2 * 2 * PI / 360
3 结束语
基于网络的数控仿真完全基于现有的Socket技术和TCP/IP协议,能实现数控G代码的远程同步仿真,以及对仿真结果进行协同评注和文字交流,提升了计算机辅助制造的技术层次和应用范围,使异地协同设计和制造增加了技术支持。
参考文献
[1] 周自强,沈连婠等,面向用户的产品虚拟模型协同讨论环境的实现,2005(3):5-10
[2] 周自强,沈连婠等,基于Web 的虚拟设计中VRML 实时模型的可交互处理方法,计算机辅助设计与图形学学报,2005.17(6):1371-1377