C# 如何在C语言中从串口读取字节数组#
我对C#串行端口编程有问题C# 如何在C语言中从串口读取字节数组#,c#,serial-port,bytearray,C#,Serial Port,Bytearray,我对C#串行端口编程有问题 我的目标是将ByteArray发送到串行端口,然后作为ByteArray获取。 但我无法从串行端口获取数据。我试过: string gelen = port.ReadExisting(); int asd = port.ReadByte(); string qwe = port.ReadLine(); 谁能告诉我怎么了? 谢谢 我的代码: using System; using System.Collections.Generic;
我的目标是将ByteArray发送到串行端口,然后作为ByteArray获取。 但我无法从串行端口获取数据。我试过:
string gelen = port.ReadExisting();
int asd = port.ReadByte();
string qwe = port.ReadLine();
谁能告诉我怎么了?
谢谢
我的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
namespace serial_port_app
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int text1, text2,text3,text4,text5, text6;
Int32.TryParse(textBox1.Text, out text1);
byte byteValue1 = Convert.ToByte(text1);
Int32.TryParse(textBox2.Text, out text2);
byte byteValue2 = Convert.ToByte(text2);
Int32.TryParse(textBox3.Text, out text3);
byte byteValue3 = Convert.ToByte(text3);
Int32.TryParse(textBox4.Text, out text4);
byte byteValue4 = Convert.ToByte(text4);
Int32.TryParse(textBox5.Text, out text5);
byte byteValue5 = Convert.ToByte(text5);
Int32.TryParse(textBox6.Text, out text6);
byte byteValue6 = Convert.ToByte(text6);
byte[] byteArray = new byte[6];
byteArray[0]=byteValue1;
byteArray[1]=byteValue2;
byteArray[2]=byteValue3;
byteArray[3]=byteValue4;
byteArray[4]=byteValue5;
byteArray[5]=byteValue6;
SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);
port.Open();
port.Write(byteArray,0,6);
>>>>>>>>>>>>> string text = port.ReadExisting();
>>>>>>>>>>>>> int asd = port.ReadByte();
>>>>>>>>>>>>> string qwe = port.ReadLine();
int n=dataGridView1.Rows.Add();
dataGridView1.Rows[n].Cells[1].Value = text;
dataGridView1.Rows[n].Cells[2].Value = asd;
dataGridView1.Rows[n].Cells[3].Value = qwe;
dataGridView1.Rows[n].Cells[4].Value = text4;
dataGridView1.Rows[n].Cells[5].Value = text5;
dataGridView1.Rows[n].Cells[6].Value = text6;
if ((n % 2) == 0)
dataGridView1.Rows[n].DefaultCellStyle.BackColor = Color.LightBlue;
else
dataGridView1.Rows[n].DefaultCellStyle.BackColor = Color.LightGreen;
port.Close();
}
编辑以获得正确答案:
string text = port.ReadExisting();
int asd = port.ReadByte();
string qwe = port.ReadLine();
port.DtrEnable = true;
port.RtsEnable = true;
int bytes = port.BytesToRead;
byte[] buffer = new byte[bytes];
port.Read(buffer, 0, bytes);
删除:
string text = port.ReadExisting();
int asd = port.ReadByte();
string qwe = port.ReadLine();
port.DtrEnable = true;
port.RtsEnable = true;
int bytes = port.BytesToRead;
byte[] buffer = new byte[bytes];
port.Read(buffer, 0, bytes);
并添加:
string text = port.ReadExisting();
int asd = port.ReadByte();
string qwe = port.ReadLine();
port.DtrEnable = true;
port.RtsEnable = true;
int bytes = port.BytesToRead;
byte[] buffer = new byte[bytes];
port.Read(buffer, 0, bytes);
要获得
字节
数组而不是字符串
请使用和当您尝试了您尝试的那些事情时发生了什么?您忽略了处理握手信号的需要。将DtrEnabled和RtsEnabled属性设置为true。使用另一个程序,如Hyperterminal或Putty,以获得对电气连接和驱动程序的信心。@HansPassant谢谢,程序工作了,您的答案正确。不幸的是,没有工作。我补充的是,DtrEnabled和RtsEnabled属性符合我的程序,并且工作正常。谢谢你的回答。@hamdi太好了。您不需要将标题编辑为“已解决”。您需要单击灰色勾号以将答案标记为已接受。如果汉斯有答案,我会说接受他的答案,但如果他不在,我会接受的!