VGAGE Pro8 对接上位机代码修改

青禾大神
上位机
发布于 2025-05-17
144 阅读
23 评论
2.4k 点赞
#Visual Basic #VGAGE

接口_接收_检测机的检测数据如下表

2HGStqlkPd_image

请求接口http://localhost:8080/api/services/ReceiveDetectionData

示例json

JSON 复制代码
{
    "manufacturer":3,
    "partNo":"123454567789",
    "machineCode":"OP10-1",
    "dataList":[
        {
            "paramDes":"结合面到毛坯定位面距离 30.3±0.1",
            "value":"28.85",
            "time":"2018-01-22 16:08:25",
            "qualfied":1
        },
        {
            "paramDes":"结合面7*M8螺纹攻深28(0/+1)",
            "value":"15.00590038",
            "time":"2018-01-22 16:08:25",
            "qualfied":1
        },
        {
            "paramDes":"R-R 2*M6螺纹底孔直径φ4.917(+0.236/0)钻深18(0/+1)",
            "value":"15.00590038",
            "time":"2018-01-22 16:08:25",
            "qualfied":1
        }
    ]
}

1、Pro8 JsonForm修改

VB 复制代码
Public Sub CreatJson()
		
    ' 省略代码
		
		Dim MeasurementTotleCount As Integer = Part.Count
		Dim MeasurementCount As Integer
		Dim items(MeasurementTotleCount + 100) As String
		
			MeasurementCount = 0
'				items(MeasurementCount) = "{"
'     注释以下代码
'			MeasurementCount += 1
'			    items(MeasurementCount) = vbTab & QUO & "inpu111111111111t" & QUO & ":"
'			MeasurementCount += 1	
'				items(MeasurementCount) = vbTab & "{"
				
'省略代码
			
			items(MeasurementCount) = Left(items(MeasurementCount),Len(items(MeasurementCount))-6)
			
			MeasurementCount += 1
				items(MeasurementCount) = vbTab & vbTab & "}]"
			MeasurementCount += 1
				items(MeasurementCount) = vbTab & "}"
'注释如下代码
'			MeasurementCount += 1
'				items(MeasurementCount) = "}"
		Dim itembuff As String = ""
			For Each item As String In items
				If  item <> "" And item <> vbCrlf Then
					itembuff += item & vbCrlf
				End If
			Next
	        WEBBUFFER = itembuff
			WriteFile(JsonFilePath & "\" & TxtFileName,itembuff)
	End If

End Sub

常见问题

等Mes上传数据失败,sting引用没有设置为sting的实例。参数名:s

agI7nwIiYO_image

1、开启数据模拟保存到D盘:

VB 复制代码
  '初始化引用
  Sub VGA_Initialize() Handles VGA.Initialize
    Part1.IsSelected = True
  End Sub 


   'Code Module 引用
   #region "数据上传PLC"
	
	Private Sub VGA_AfterReadyToGage(ByVal rtg As ReadyToGage) Handles VGA.AfterReadyToGage
		'没有PLC选择Part,默认选择Part1,可初始化全局
		Part1.IsSelected = True
		If rtg.Id = 1 Then
			OutputWindow.Clear
			Dim Part As Part = VGA.SelectedPart 
		
			If Part1.IsSelected Then 
				Dim M1 As DoubleMeasurement = DirectCast(Part1("M1"),DoubleMeasurement)
				Dim M2 As DoubleMeasurement = DirectCast(Part1("M2"),DoubleMeasurement)
		'			DB12802_DBD0.Value = CDbl(M1.ValueToString)
		'			DB12802_DBD4.Value = CDbl(M2.ValueToString)
		'			OutputWindow.WriteLine(CDbl(M1.ValueToString).toString())
				If MesEnable.Value = True Then
					CreatJson
					Decrypt_Code.Value = True
					postData()
				End If
			End If
		End If
	End Sub
#end region

2、发送本地服务端测试

如右图所示,发送和接受成功
M4YIabh4vn_image

C#代码代码示例

1、定义参数获取类型

VB 复制代码
public class RootObject
{
    public string Date { get; set; }; '日期
    public string Time { get; set; }; '时间
    public string PartNo { get; set; }; '零件号
    public string MachineCode { get; set; };'设备编号

    public List<DateItem> dataList { get; set; };  '数据列表
    
}

public class DateItem
    {
        public string ParamDes { get; set; }; '参数描述
        public string Value { get; set; };'检测值
        public string Qualfied { get; set; }; '检测状态
        public string Time { get; set; }; '检测时间
        public string ProductionName { get; set; }; '参数描述
        public string Manufacturer { get; set; }; '设备编号
    }

    

2、接收返回内容

z9Jaaqi6wW_5128ae3fd5b9ad73a9848d821c8e5fad

青禾大神

Vue技术专家 | 5年开发经验

专注前端技术领域,Vue生态贡献者,定期分享前沿技术文章。

评论 (128)

前端小白

这篇文章讲得太好了,解决了我很多疑惑!

资深开发者

对依赖收集部分的讲解很深入,期待更多原理分析文章!

相关推荐

Vue3组合式API最佳实践

3.2k阅读 · 86评论

Pinia状态管理深度解析

2.5k阅读 · 45评论