郁闷中~~~~
我用2005是用F11逐语句编译没有错误,但用F5编译却取不到串口返回值??
我用2005是用F11逐语句编译没有错误,但用F5编译却取不到串口返回值??
解决方案 »
- linq: 请问List<Person> a 按照年龄排序后,为啥结果为空,本来不为空的!!
- 通过kernel32.dll调用动态库调时第一个接口函数能成功,第二个时“无法加载 DLL“kernel32.dll”
- splitter控件怎么上下拖动
- asp.net批量生成静态页的问题
- winform用户登陆问题
- 关于SqlDependency问题?
- VC# 和 SQLCE4.0 软件开发问题.
- 初来"炸"到 打听一下`
- 水晶报表中如何按照页进行统计??
- SQL Server 中的记录如何传输到DTS系统
- Socket编程, 一个很奇怪的问题. 无异常断开
- 关于C#制作的组件,路径问题???
public void wriPort() //发送协议
{
string writeCom = "ef 01 f0 a5";
Byte[] buff = HexStringToBinary(writeCom.Trim());
if (serialport1.IsOpen != true)
{
serialport1.Open();//打开串口
}
serialport1.Write(buff, 0, buff.Length);//发送数据
}
public void redPort()
{
Byte[] redbyte = new byte[10];
serialport1.Read(redbyte, 0, 10);//读取数据(在这设断点运行正常能取出数据,否则就只能取出数据的起始位其他的都是零.)
txt1.Text = redbyte[3].ToString() + redbyte[4].ToString() + "." + redbyte[5].ToString();//文本框显示
txt2.Text = redbyte[6].ToString() + redbyte[7].ToString() + "." + redbyte[8].ToString();//文本框显示
serialport1.Close();
}
public byte[] HexStringToBinary(string hexstring) //把String转换成byte数组
{
string[] tmpary = hexstring.Trim().Split( );
byte[] buff = new byte[tmpary.Length];
for (int i = 0; i < buff.Length; i++)
{
buff[i] = Convert.ToByte(tmpary[i],16);
}
return buff;
}
private void button1_Click(object sender, EventArgs e)
{
wriPort();//调用方法
redPort();
}
希望哪位大哥 告诉小弟毛病在哪? 我刚接触串口, 做的一个只能温湿的联系程序.希望哪位在可以告诉我应该看写什么书.
先谢谢各位回帖的朋友们!
(1)wriPort();//调用方法 redPort();
写在一起了。
就算自收自发 它 串口硬件也需要时间呀
你单步调试就是给了硬件收数据的时间。so(2)串口收数据要么在中断里处理,要么用Timer处理
你这种情况,可以在发送后先Sleep一段时间、100ms?
SerialPort serialport1=new SerialPort( "com1 ", 9600, Parity.None, 8, StopBits.One);//实例化
serialport1.Open();
public void wriPort() //发送协议
{
string writeCom = "ef 01 f0 a5 ";
Byte[] buff = HexStringToBinary(writeCom.Trim());
if (serialport1.IsOpen != true)
{
serialport1.Open();//打开串口
}
serialport1.Write(buff, 0, buff.Length);//发送数据
System.Threading.Thread.Sleep(100); // sleep 100ms to send data
}
public void readPort()
{
Byte[] redbyte = new byte[serialport1.BytesToRead];
serialport1.Read(redbyte, 0, serialport1.BytesToRead );
serialport1.Close();
}
public byte[] HexStringToBinary(string hexstring) //把String转换成byte数组
{
string[] tmpary = hexstring.Trim().Split( );
byte[] buff = new byte[tmpary.Length];
for (int i = 0; i < buff.Length; i++)
{
buff[i] = Convert.ToByte(tmpary[i],16);
}
return buff;
}
private void button1_Click(object sender, EventArgs e)
{
wriPort();//调用方法
redPort();
}