描述:我使用的是 Windows CE HMI,在 vb.net 中编写代码。我正在通过 Modbus RTU (RS485) 与 4 个流量计进行通信。我正在使用 dll 进行 Modbus 通信。现在,当我在我的程序中启动一个新线程来运行模块的一部分时,一切正常,我正在与 4 米通信。到现在为止还挺好。但是现在我想让我的代码更有效率,而不是在一个模块中抛出四米的所有代码,我想创建 4 个类。
我在我的主窗体(按钮)中得到了这段代码来创建对象。
Dim Meter1 As New cModbusDriver(1) '(1) is the Modbus Meter ID
Dim Meter1_Thread As New Thread(AddressOf Meter1.ModbusDriver)
Meter1_Thread.IsBackground = True
Meter1_Thread.Start()
Run Code Online (Sandbox Code Playgroud)
以下是我班级的一部分:
Public Class cModbusDriver
Private master As ModbusSerialMaster
Public Sub ModbusDriver()
While blnStopModbusThread = False
Select Case intState
Case 1
Try
Dim holding_register() As UShort = master.ReadHoldingRegisters(1, 0, 8)
Flow = HextoFloat.ConvertHexToSingle((Hex(holding_register(1)) & Hex(holding_register(0))))
Run Code Online (Sandbox Code Playgroud)
错误 System.NullReferenceException 来自该行Dim …
try
{
string directory = @"D:/user/user.txt";
FileStream FS = new FileStream(directory, FileMode.Append);
StreamWriter SW = new StreamWriter(FS);
string register;
register = $"{generateID()};{txtfirstName.Text};{txtLastName.Text};{txtUser.Text};{txtEmail.Text};{txtPersonalID.Text}";
SW.WriteLine(register);
SW.Close();
FS.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我在 C# Windows Forms .NET Framework 中运行此代码,并且不断收到相同的消息。我正在上大学,我对编程还很陌生,所以我不知道可能出了什么问题。你有什么想法?任何想法?