我正在做停车场显示系统的最后一年项目。它的基本功能是检测停车场中的任何车辆,更新可用的车辆数量并显示是否已满。串口通讯工程
我在使用Microsoft Visual Studio 2008编写C#程序时遇到了麻烦。我从串口收到我的其他项目队友发送的数据。我需要做的就是接收数据,然后读取数据。这只是为了模拟车辆被占用和清空。我需要编辑我的程序,以便我可以接收和更新有关批次的数据,无论它是否被占用并调用其他功能。数据接收将采用ASCII格式。每批将被分配到一个特定的ascii。例如0x5A是lot1,0x59是lot 2等。
这是我的项目的一个示例。
int intNumberLots = 6;
SerialPort serialPort = new SerialPort("COM1");
serialPort.BaudRate = 115200;
serialPort.Parity = Parity.None;
serialPort.StopBits = StopBits.One;
serialPort.DataBits = 8;
serialPort.Handshake = Handshake.None;
serialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
serialPort.Open();
private void startButton_Click(object sender, EventArgs e)
{
while(){
if (serialPort.ReadLine == "0x57" && intNumberLots >= 0) // if data received is "1", do tasks below
{
inputTextBox.Clear(); // clear input textbox
pictureBox1.Visible = true; // show a picture of a vehicle
intNumberLots--; // decrease the number of available parking lots shown
label9.Text = intNumberLots.ToString();
}
else if (serialPort.ReadLine == "0x58" && intNumberLots >= 0)
{
inputTextBox.Clear();
pictureBox2.Visible = true;
intNumberLots--;
label9.Text = intNumberLots.ToString();
}
else if (serialPort.ReadLine == "0x59" && intNumberLots >= 0)
{
inputTextBox.Clear();
pictureBox3.Visible = true;
intNumberLots--;
label9.Text = intNumberLots.ToString();
}
else if (serialPort.ReadLine == "0x5A" && intNumberLots >= 0)
{
inputTextBox.Clear();
pictureBox4.Visible = true;
intNumberLots--;
label9.Text = intNumberLots.ToString();
}
}
然后对于更新如果没有汽车的地段的代码;
else if (string.str != "0x57" && intNumberLots >= 3)
{
inputTextBox.Clear();
pictureBox1.Visible = false;
intNumberLots++;
label9.Text = intNumberLots.ToString();
}
else if (string.str != "0x58" && intNumberLots >= 3)
{
inputTextBox.Clear();
pictureBox2.Visible = false;
intNumberLots++;
label9.Text = intNumberLots.ToString();
}
else if (string.str != "0x59" && intNumberLots >= 3)
{
inputTextBox.Clear();
pictureBox3.Visible = false;
intNumberLots++;
label9.Text = intNumberLots.ToString();
}
else if (string.str != "0x5A" && intNumberLots >= 3)
{
inputTextBox.Clear();
pictureBox4.Visible = false;
intNumberLots++;
label9.Text = intNumberLots.ToString();
}
你真正的问题是什么?我不认为这是一个问题。 –
好...继续下去。 – Reniuz