我有一個地磅應用程序,在這裏我使用串行端口來獲取地磅的重量。在同一個COM端口上使用兩個串行端口 - WPF C#
我需要採取權重兩次。一輛空載貨車,然後裝載卡車。我只是想知道我是否可以使用兩個串行端口,一個用於稱重空載貨車,另一個用於稱重已裝載的貨車?像
spWeighIn = new SerialPort("COM1", 2400, Parity.None, 8, StopBits.One);
spWeighOut = new SerialPort("COM1", 2400, Parity.None, 8, StopBits.One);
,並利用它們同時
感謝
這是我的代碼:
SerialPort spWeigh;
string strResponseWeigh;
private delegate void SetTextDeleg(string text);
public MainWindow()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
}
void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
spWeigh = new SerialPort("COM1", 2400, Parity.None, 8, StopBits.One);
spWeigh.RtsEnable = false;
spWeigh.DtrEnable = false;
spWeigh.Handshake = Handshake.None;
spWeigh.ReadTimeout = 10000;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
if (!spWeigh.IsOpen)
spWeigh.Open();
spWeigh.DataReceived += new SerialDataReceivedEventHandler(spWeigh_DataInReceived);
spWeigh.Write("W");
}
void spWeigh_DataInReceived(object sender, SerialDataReceivedEventArgs e)
{
strResponseWeigh = spWeigh.ReadLine();
string wt = strResponseWeigh.Substring(5, 7);
this.TxtFrstWt.Dispatcher.BeginInvoke(new SetTextDeleg(sin_DataReceived), new object[] { wt });
}
private void sin_DataReceived(string data)
{
TxtFrstWt.Text = data.Trim();
TxtDateIn.Text = DateTime.Now.ToString("dd/MM/yyyy");
}
private void button2_Click(object sender, RoutedEventArgs e)
{
if (!spWeigh.IsOpen)
spWeigh.Open();
spWeigh.DataReceived += new SerialDataReceivedEventHandler(spWeigh_DataOutReceived);
spWeigh.Write("W");
}
void spWeigh_DataOutReceived(object sender, SerialDataReceivedEventArgs e)
{
strResponseWeigh = spWeigh.ReadLine();
string wt = strResponseWeigh.Substring(5, 7);
this.TxtFrstWt.Dispatcher.BeginInvoke(new SetTextDeleg(sout_DataReceived), new object[] { wt });
}
private void sout_DataReceived(string data)
{
TxtScndryWt.Text = data.Trim();
TxtDateOut.Text = DateTime.Now.ToString("dd/MM/yyyy");
}
}
這是兩個獨立的設備連接到COM端口?爲什麼不打開一次端口並從它讀取兩次呢? –
你只是將這兩個秤連接到相同的COM端口?這是行不通的。 –