C# WINFORM接RS232的磅秤機,顯示磅秤機的秤出重量
這案子是為了減少秤重人員人工填寫錯誤重量
所以用C#的WINFORM將磅秤機所秤出的重量直接讀入程式的TEXTBOX中
難度不高
但是有幾個關鍵點要先解決
1-磅秤機要有輸出秤出的重量的功能,使用RS232或網路上傳都可以
2-如果是用RS232的話,接收的電腦也要有RS232的接頭,要買RS232轉USB的轉接頭
https://ecshweb.pchome.com.tw/search/v3.3/?q=rs232%E8%BD%89usb
3-C#程式中用Thread、delegate去開啟執行緒來讀入磅秤機輸出秤出的重量
4-RS232的SerialPort有固定參數要設定,最重要是 PortName 要設定對接到真正的COM
程式如下:
private void Frm_Load(object sender, EventArgs e)
{
Btnconnect();
}
public void Btnconnect()
{
serialPortIn = new SerialPort();
serialPortIn.PortName ="COM1";
serialPortIn.BaudRate = 9600;
serialPortIn.Parity = Parity.None;
serialPortIn.DataBits = 8;
serialPortIn.StopBits = StopBits.One;
if (!serialPortIn.IsOpen)
{
try
{
serialPortIn.Open();
}
catch (Exception ee)
{
MessageBox.Show(@"ERROR:" + ee);
}
}
if (serialPortIn.IsOpen)
{
ReadSerialData();
}
}
private void ReadSerialData()
{
ReadSerialDataThread = new Thread(ReadSerial);
ReadSerialDataThread.Start();
}
private void ReadSerial()
{
while (serialPortIn.IsOpen)
{
try
{
readseroaldata = serialPortIn.ReadLine();
ShowSerialData(readseroaldata);
}
catch (Exception)
{
}
Thread.Sleep(20);
}
}
public delegate void ShowSerialDatadelegate(string r);
private void ShowSerialData(string s)
{
DateTime now = DateTime.Now;
string pattern = @"[-+]?\d*\.?\d+";
string datacon = "";
if (textBox.InvokeRequired)
{
ShowSerialDatadelegate SSDD = ShowSerialData;
Invoke(SSDD, s);
}
else
{
MatchCollection matches = Regex.Matches(s, pattern);
foreach (Match match in matches)
{
datacon += match.Value;
}
textBox.Text = datacon;
}
}
自我LV~