使用SerialPort控件,打开串口发现遇到IOException异常...
我的参数设置都是正确的...
因为同样的代码在.net3.5下是完全可以运行的...不会遇到异常
查了好久..唯一的线索就是.net2.0 sp2的问题...
据说这个sp2可以解决这个问题...
见http://www.cnblogs.com/shineqiujuan/archive/2010/01/14/1647821.html
我在PC上装了SP2还是同样的问题..
是不是在WINCE上还需要安装什么东西??
16 个解决方案
#1
不清数,没在wince上弄过串口。你弄好了把结果写上啊。
#2
暂时还没找到能在.net2.0上面解决的办法...
#3
补充一下:
虽然触发了IOExceptio...但是串口确是能够成功打开的...
也能够发数据给PC....
但是奇怪的是..不能从串口读数据....
读数据的相关代码如下:
虽然触发了IOExceptio...但是串口确是能够成功打开的...
也能够发数据给PC....
但是奇怪的是..不能从串口读数据....
读数据的相关代码如下:
com.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.OnDataReceived);
delegate void somedle();
public static string FromASCIIByteArray(byte[] characters)
{
ASCIIEncoding encoding = new ASCIIEncoding();
string constructedString = encoding.GetString(characters, 0, characters.Length);
return (constructedString);
}
private void OnDataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (com.IsOpen)
{
byte[] bt = new byte[1024];
int cnt = com.Read(bt, 0, 1024);
data = FromASCIIByteArray(bt);
//data = com.ReadLine();
somedle sd = new somedle(ShowReceive);
Invoke(sd);
}
}
void ShowReceive()
{
txtShow.Text += data;
}
#4
我现在那个CE上的就是2.0的,没有出现你说的问题啊。
#5
能否给个示例...或者其他资料??
如果方便...能否加个Q(我的是178005289)?
#6
不能沉诶-,-
大家帮帮忙诶...
难道.net3.5出现之前...
很少人用C#操作串口么?
大家帮帮忙诶...
难道.net3.5出现之前...
很少人用C#操作串口么?
#7
自己顶- -
#8
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.PortName = "COM2";
serialPort1.BaudRate = 19200;
}
string rec = "";
delegate void InvokeDelegate();
public void showData()
{
this.textBox1.Text += rec + "\r\n";
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen) serialPort1.Open();
}
private void btnClose_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
rec = serialPort1.ReadLine();
this.textBox1.BeginInvoke(new InvokeDelegate(showData));
}
{
serialPort1.PortName = "COM2";
serialPort1.BaudRate = 19200;
}
string rec = "";
delegate void InvokeDelegate();
public void showData()
{
this.textBox1.Text += rec + "\r\n";
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen) serialPort1.Open();
}
private void btnClose_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
rec = serialPort1.ReadLine();
this.textBox1.BeginInvoke(new InvokeDelegate(showData));
}
#9
看起来和我的代码并无太大区别啊??
你的。net2.0装了SP2了么?
然后还做了其他什么事么?
#10
出现错误后,调用GetLastError看错误代码。
#11
c#中怎么GetLastError??
#12
蛋疼啊,楼主,我的问题跟你一样 =。= ,wince6.0 ,查了下也是说要打SP2的补丁,留名看看还有别的办法没...tnnd调试的时候一切都好的
#13
调试的时候一切都好的??
别的办法??
你打SP2的补丁 之后可以了么???
#14
- -继续顶
求高手解答啊
求高手解答啊
#15
我没打SP2补丁啊,之后也没搞定,我用其他办法掩饰了这个问题 =。=
#16
你难道是忽视掉那个异常??
网上看到很多人这么干的- -
如果是这样搞的??你能发数据给PC机么?
#1
不清数,没在wince上弄过串口。你弄好了把结果写上啊。
#2
暂时还没找到能在.net2.0上面解决的办法...
#3
补充一下:
虽然触发了IOExceptio...但是串口确是能够成功打开的...
也能够发数据给PC....
但是奇怪的是..不能从串口读数据....
读数据的相关代码如下:
虽然触发了IOExceptio...但是串口确是能够成功打开的...
也能够发数据给PC....
但是奇怪的是..不能从串口读数据....
读数据的相关代码如下:
com.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.OnDataReceived);
delegate void somedle();
public static string FromASCIIByteArray(byte[] characters)
{
ASCIIEncoding encoding = new ASCIIEncoding();
string constructedString = encoding.GetString(characters, 0, characters.Length);
return (constructedString);
}
private void OnDataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (com.IsOpen)
{
byte[] bt = new byte[1024];
int cnt = com.Read(bt, 0, 1024);
data = FromASCIIByteArray(bt);
//data = com.ReadLine();
somedle sd = new somedle(ShowReceive);
Invoke(sd);
}
}
void ShowReceive()
{
txtShow.Text += data;
}
#4
我现在那个CE上的就是2.0的,没有出现你说的问题啊。
#5
能否给个示例...或者其他资料??
如果方便...能否加个Q(我的是178005289)?
#6
不能沉诶-,-
大家帮帮忙诶...
难道.net3.5出现之前...
很少人用C#操作串口么?
大家帮帮忙诶...
难道.net3.5出现之前...
很少人用C#操作串口么?
#7
自己顶- -
#8
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.PortName = "COM2";
serialPort1.BaudRate = 19200;
}
string rec = "";
delegate void InvokeDelegate();
public void showData()
{
this.textBox1.Text += rec + "\r\n";
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen) serialPort1.Open();
}
private void btnClose_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
rec = serialPort1.ReadLine();
this.textBox1.BeginInvoke(new InvokeDelegate(showData));
}
{
serialPort1.PortName = "COM2";
serialPort1.BaudRate = 19200;
}
string rec = "";
delegate void InvokeDelegate();
public void showData()
{
this.textBox1.Text += rec + "\r\n";
}
private void btnOpen_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen) serialPort1.Open();
}
private void btnClose_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen) serialPort1.Close();
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
rec = serialPort1.ReadLine();
this.textBox1.BeginInvoke(new InvokeDelegate(showData));
}
#9
看起来和我的代码并无太大区别啊??
你的。net2.0装了SP2了么?
然后还做了其他什么事么?
#10
出现错误后,调用GetLastError看错误代码。
#11
c#中怎么GetLastError??
#12
蛋疼啊,楼主,我的问题跟你一样 =。= ,wince6.0 ,查了下也是说要打SP2的补丁,留名看看还有别的办法没...tnnd调试的时候一切都好的
#13
调试的时候一切都好的??
别的办法??
你打SP2的补丁 之后可以了么???
#14
- -继续顶
求高手解答啊
求高手解答啊
#15
我没打SP2补丁啊,之后也没搞定,我用其他办法掩饰了这个问题 =。=
#16
你难道是忽视掉那个异常??
网上看到很多人这么干的- -
如果是这样搞的??你能发数据给PC机么?