在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