标题: SSCOM32串口调试助手显示WriteFile function failed(win errorcode:6) [打印本页]

作者: 15119014737    时间: 2021-2-10 01:04
标题: SSCOM32串口调试助手显示WriteFile function failed(win errorcode:6)
         各位大牛,小弟今天编写C51串口中断程序时,遇到了一个问题,就是用SSCOM32串口调试助手发送程序,显示成这样:

     请问这是什么原因呢?本人的开发板是普中科技的,数据线也连接得好好的,网上有人说要装虚拟串口。

        以下是小弟的代码,还请大家指点!感激不尽!

  1. #include "reg52.h"
  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. unsigned char flag,a,i;
  5. uchar code table[] = "I get ";

  6. void init()
  7. {
  8.     TMOD = 0x20;     //设定T1定时器工作方式2
  9.           TH1  = 0xfd;     //T1定时器装初值
  10.           TL1  = 0xfd;     //T1定时器装初值
  11.           TR1  = 1;        //启动T1定时器
  12.           REN  = 1;        //允许串口接收位
  13.           SM0  = 0;        //设定串口工作方式1
  14.           SM1  = 1;       //同上
  15.           EA   = 1;        //开总中断
  16.           ES   = 1;        //开串口中断
  17. }

  18. void main()
  19. {
  20.     init();
  21.           while(1)
  22.                 {
  23.                      if(flag == 1)     //当检测到flag为1时,说明程序已经执行过串口中断服务,即受到了数据
  24.                                  {
  25.                                             ES = 0;       //接下来要发送数据,若不关闭串口中断,当发送完数据后,单片机同样会申请串口中断
  26.                                             for(i = 0;i < 6;i ++)
  27.                                       {
  28.                                                                   SBUF = table[i];       //发送数据
  29.                                                                   while(!TI);            //等待发送完毕
  30.                                                                   TI   = 0;      
  31.                                                         }
  32.                                                         SBUF = a;                  //发送从PC端接收到的数据
  33.                                                         TI   = 0;
  34.                                                         ES   = 1;                  //发送完毕后,重新打开串口中断
  35.                                                         flag = 0;
  36.                                  }
  37.                 }
  38. }

  39. void ser() interrupt 4
  40. {
  41.     RI   = 0;
  42.           a    = SBUF;    //接收数据
  43.           flag = 1;
  44. }
复制代码


作者: Hephaestus    时间: 2021-2-10 09:35
跟你的c51代码一毛钱关系都没有,是软件和win通讯出错了,原因我也不清楚。
作者: cn_zhx    时间: 2021-2-10 10:06
楼上说得对,和你的软件无关。
作者: 15119014737    时间: 2021-2-10 14:41
Hephaestus 发表于 2021-2-10 09:35
跟你的c51代码一毛钱关系都没有,是软件和win通讯出错了,原因我也不清楚。

好的,感谢提醒
作者: 15119014737    时间: 2021-2-11 19:21
后来我下载了虚拟串口软件,增加了两个串口,就没有WriteFile Function fail,应该是由于U盘驱动,C51开发板数据线,鼠标占满了串口,而串口助手的写功能也需要占用一个串口,导致写功能失败,另外波特率也一定要设置好,T1定时器的溢出率要和波特率对应上,否则会出现乱码。
作者: Longan.Wang    时间: 2023-9-12 15:28
Hephaestus 发表于 2021-2-10 09:35
跟你的c51代码一毛钱关系都没有,是软件和win通讯出错了,原因我也不清楚。

正解!或许USB转TTL工具没有装驱动,或许重启一下电脑就好了
作者: sj820224    时间: 2023-9-13 16:42
软件和win通讯出错了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1