我有一个地磅应用程序,在这里我使用串行端口来获取地磅的重量。在同一个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端口?这是行不通的。 –