C# SerialPort串口通讯控制道闸,发送数据有动作,但数据接收不到,DataReceived事件总是不触发?
3个回答
展开全部
用串口调试工具确保代码无误.
设置好串口和比特率点击open,然后编辑内容发送.用下面的方法接收.
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
try
{
if (serialPort1.IsOpen)
{
StringBuilder strb = new StringBuilder();
byte[] l_byte = new byte[4096];
Thread.Sleep(3000);//每次接收中间加延迟,便于接收完整数据.
int l_int = serialPort1.Read(l_byte, 0, l_byte.Length);
if (l_int > 0)//不是空数据
{
strb.Append(Encoding.UTF8.GetString(l_byte, 0, l_int));
string res = strb.ToString();
如果res = "hello" 那你的代码就没问题.
展开全部
需要给你完成一份吗
追问
什么意思?有示例代码能给我发份更好
追答
需要定做可以丘上说
我id
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
贴代码上来,我看看
更多追问追答
追问
不管什么代码,就是不往接收事件上跳。发送是正常的,因为设备是动作了。
追答
额。。首先确认SerialPort的DataReceived事件有没有关联上,然后确认设备是否真的有返回数据,可以用串口调试助手手动发送指令,看看有数据返回没,如果有,那就在找找上位机程序的问题,如果没有返回数据,那就是下位机设备的问题了;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询