在hslcommuincation的官网上有这么一段话:HSL专注于解决工业网络间的复杂的数据通信问题,解决多个独立程序之间的数据通信,甚至是不同的操作系统,平台的网络通信问题, 可以用来构建各种各样的应用程序,下至通信小软件,上位机软件,CS架构的聊天系统,上至ERP系统,历史追述系统,生产管理系统,MES系统, 无论你的开发环境是Visual Studio, Visual Studio Code, IntelliJ IDEA, Eclipse, Labview, Android Studio等等;
确实在工业软件开发中用HSL确实有很多方便之处,它集成了各款机器人以及PLC的通讯方式,今天用HSL的UserCurve画了曲线;
这个小demo是用vb写的,vbnet对开发桌面程序确实有自己的优点(自己的一点小见解),画曲线要有数据来源,这里用生成的随机数代替;UserCurve还支持曲线的放大与缩小,以及某个点的值等等,这里做个一个简单实例,效果图如下:


具体代码如下:
Public data As Single()
Public list1 As ArrayList = New ArrayList()
Public i As Integer = 0
Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
UserCurve1.SetLeftCurve("B", data, Color.Tomato)
'UserCurve1.SetLeftCurve("A", GetRandm(50000, 0, 200), Color.DodgerBlue)
End Sub
Private Function GetRandm(count As Integer, min As Double, max As Double) As Single()
Dim data As Single() = New Single(count - 1) {}
Dim rand = New System.Random()
For i As Integer = 0 To data.Length - 1
data(i) = CSng(rand.NextDouble) * (max - min) + min
Next
Return data
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Dim Timer1 As Timer = New Timer()
Dim rand = New System.Random()
Timer3.Interval = 200
Timer3.Enabled = True
'RaiseEvent Timer3.Tick += Function(sender1, e1)
' UserCurve1.AddCurveData("B", rand.Next(50, 201))
'End Function
Timer3.Start()
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer3.Tick
'Dim rand = New System.Random()
'list1.Add(CSng(rand.Next(50, 201).ToString))
''Dim data1 As Single() = CType(list1.ToArray(), Single())
'Dim array As String() = CType(list1.ToArray(), String())
'data = CSng(array)
'data(i) = rand.Next(50, 201)
'i += 1
'Timer1.Tick += Function(sender1, e1)
UserCurve1.AddCurveData("B", GetRandm(1, 0, 200))
'End Function
End Sub
