110,533
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Linq;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;
namespace MyWinCETest
{
public partial class Form4 : Form
{
public Form4()
{
InitializeComponent();
}
public void IninCom(string portName)
{
serialPort1 = new SerialPort(portName, 19200, Parity.None, 8, StopBits.One);
serialPort1.WriteTimeout = SerialPort.InfiniteTimeout;
serialPort1.ReadTimeout = SerialPort.InfiniteTimeout;
serialPort1.Handshake = Handshake.None;
serialPort1.RtsEnable = true;
serialPort1.DtrEnable = true;
//需要接收到几个字符触发一次DataReceived的时候,ReceivedBytesThreshold就设置为几
serialPort1.ReceivedBytesThreshold = 1;
//serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
private void button1_Click(object sender, EventArgs e)
{
try
{
if (serialPort1.IsOpen)
serialPort1.Close();
IninCom("COM1");
serialPort1.Open();
if (textBox1.Text.Trim() == "")
{
MessageBox.Show("Input null!");
return;
}
byte[] data = Encoding.Default.GetBytes(textBox1.Text.Trim());
serialPort1.Write(data, 0, data.Length);
serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message.ToString());
}
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
byte[] data = new byte[serialPort1.ReadBufferSize];
serialPort1.Read(data, 0, data.Length);
string str = Encoding.Default.GetString(data, 0, data.Length);
PortInvoke(str);
}
private void PortInvoke(string text)
{
textBox2.Invoke(new EventHandler(delegate { textBox2.Text = text; }));
}
}
}