110,561
社区成员
发帖
与我相关
我的任务
分享
int currentReadLengh = 0;
int lastReadLengh = -1;
while (gateComPort.BytesToRead != lastReadLengh)
{
currentReadLengh = gateComPort.BytesToRead;
lastReadLengh = currentReadLengh;
System.Threading.Thread.Sleep(20);
}
byte[] bytes = new Byte[lastReadLengh];
gateComPort.Read(bytes, 0, bytes.Length);
byte[] recb = mycom1.Read(30);
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false; //引用它之后就不会有receiveedit.appendtext();运行时的线程错误了
int n = serialPort1.BytesToRead;//先记录下来,避免某种原因,人为的原因,操作几次之间时间长,缓存不一致
byte[] buf = new byte[n];//声明一个临时数组存储当前来的串口数据
Received_Count += n;//增加接收计数
serialPort1.Read(buf, 0, n);//读取缓冲数据
builder.Clear();//清除字符串构造器的内容
builder.Append(Encoding.ASCII.GetString(buf));
//直接按ASCII规则转换成字符串
builder.Append(Encoding.ASCII.GetString(buf));
textBox1.AppendText(builder.ToString());//可以使用
textBox2.Text = (Received_Count - 1).ToString();