c#中一个类打开串口,另一个类发送串口数据怎么弄
请注意类就是c#的form。这个有点晕了。publicEchosounderTester(EchoSounderform1,RS232Modulers232Module)...
请注意类就是c#的form。这个有点晕了。
public EchosounderTester(EchoSounder form1, RS232Module rs232Module)//回波测试
{
this.rs232Module = rs232Module;
this.form1 = form1;
}
这个rs232Module有什么用??
public MsgDispatcher(Transducer form)
{
this.form = form;
rs232Module = new RS232Module();
protocol = new Protocol();
transducerTest = new TransducerTest(form, rs232Module);
// echosounderTester = new EchosounderTester(form, rs232Module);
// used only for testing
/*
System.Timers.Timer testTimer = new System.Timers.Timer();
testTimer.Elapsed += new ElapsedEventHandler(OnTestTimerEvent);
testTimer.Interval = 10;
testTimer.Enabled = true;
*/
}
这个里面调用了上面的第二个,这个绕的我头晕 展开
public EchosounderTester(EchoSounder form1, RS232Module rs232Module)//回波测试
{
this.rs232Module = rs232Module;
this.form1 = form1;
}
这个rs232Module有什么用??
public MsgDispatcher(Transducer form)
{
this.form = form;
rs232Module = new RS232Module();
protocol = new Protocol();
transducerTest = new TransducerTest(form, rs232Module);
// echosounderTester = new EchosounderTester(form, rs232Module);
// used only for testing
/*
System.Timers.Timer testTimer = new System.Timers.Timer();
testTimer.Elapsed += new ElapsedEventHandler(OnTestTimerEvent);
testTimer.Interval = 10;
testTimer.Enabled = true;
*/
}
这个里面调用了上面的第二个,这个绕的我头晕 展开
2个回答
展开全部
我给你写到一个类里了;
public class ComPort
{
//串口通讯对象
SerialPort taxPort;
//端口号默认是COM1
private string portName = "COM1";
//波特率默认是9600
private int baudRate = 115200;
//接收超时时间默认为1000
private double timeOut = 1000;
//数据位
private int dataBit = 8;
#region 构造函数
public ComPort()
{
taxPort = new SerialPort(portName);
taxPort.BaudRate = baudRate;
taxPort.DataBits = dataBit;
taxPort.Parity = System.IO.Ports.Parity.None;
taxPort.ReceivedBytesThreshold = 1;
taxPort.DataReceived += new SerialDataReceivedEventHandler(DataReceived);
}
#endregion
#region 析构函数
~ComPort()
{
this.Dispose(false);
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if (disposing)
{
//释放托管资源
taxPort.Dispose();
}
//释放非托管资源先关闭再释放
Close();
taxPort.Dispose();
if (disposing)
{
// 对象会被 Dispose 方法释放.
// 调用GC.SupressFinalize将此对象从释放队列中清除
// 防止终结器对此对象重复释放。
GC.SuppressFinalize(this);
}
}
#endregion
#region 串口打开与关闭
/// <summary>
/// 打开串口
/// </summary>
/// <returns>是否成功</returns>
public bool Open()
{
try
{
if (taxPort.IsOpen != true)
{
taxPort.Open();
}
return true;
}
catch
{
return false;
}
}
/// <summary>
/// 关闭串口
/// </summary>
public void Close()
{
if (taxPort.IsOpen == true)
{
taxPort.Close();
}
}
#endregion
/// <summary>
/// 发送数据
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public bool Send_Data(byte[] data)
{
try
{
if (Open() == false)
{
Mess.ShowMessage("串口打开失败!请检查串口是否被占用!", 1);
return false;
}
TY_Method.delay(500);
taxPort.Write(data, 0, data.Length);
return true;
}
catch (Exception ex)
{
// Mess.ShowMessage("此次通讯错误!" + ex);
Close();
return false;
}
}
}
这是我自己程序里的通信类!
更多追问追答
追问
我在一个类里面是没问题的,我是用到了两个类,然后出现的问题是taxport不能共用。我用static就可以了,但是我如果想要用另外一个类(是不是传参的时候传个实例?)我这个有点晕
追答
保险起见!串口对象在一个程序里最好只new一个,因为只要你用完了忘了关闭,另一个串口打开的时候就会被提示串口被占用,用static的,拿类名在第二个类里直接调用!!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询