10288|16

57

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince6.0是否可以直接向串口发送16进制的数据?? [复制链接]

wince6.0是否可以直接向串口发送16进制的数据??
DWORD dwBytesWrite= 132;
        DWORD dwBytesWrite1= 35;
        COMSTAT ComStat;
        DWORD dwErrorFlags;
        BOOL bWriteStat;

        char a[10];
        memset(a,'\0',10);
        char b[2];
        memset(b,'\0',2);
        char c[4];
        memset(c,'\0',4);
        char f[2];
        memset(f,'\0',2);
        char e[2];
        memset(e,'\0',2);

        f[0] = 0x1B;
        f[1] = 0x40;
        bWriteStat=WriteFile(hCom,f,2,&dwBytesWrite1,NULL);
        //居中
        a[0] = 0x1B;
        a[1] = 0x61;
        a[2] = 0x01;
        // 设置字符倍宽打印
        a[3] = 0x1C;
        a[4] = 0x21;
        a[5] = 0x0C;
        //
        a[6] = 0x1C;
        a[7] = 0x53;
        a[8] = 0x00;
        a[9] = 0x01;

        bWriteStat=WriteFile(hCom,a,10,&dwBytesWrite1,NULL);
还有,为什么我发送后设备没有反应??
此帖出自WindowsCE论坛

最新回复

我觉得你完全可以借助串口调试助手来进一步定位出原因具体在那一方面,现在产生你这个问题的原因可能性太多,软件与硬件都可能有问题…  详情 回复 发表于 2010-5-28 11:41
点赞 关注
 

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
可以的,你的串口驱动是不是有问题啊
此帖出自WindowsCE论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
引用 1 楼 gooogleman 的回复:
可以的,你的串口驱动是不是有问题啊

我用的是wince6.0系统的那块板上的串口直接连接一个设备(比如是打印机,也是串口进行连接),那板直接向这打印发送数据进行打印,但是没有效果。。。。但串口通信像是不用驱动的呀??
此帖出自WindowsCE论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
bootloader我也看了很久,可是还是云里雾里的,嵌入式要慢慢了,急不得。
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
对于arm或者其他cpu来说,处理的数据都是二进制的,没有什么16进制,8进制,10进制之分。只要是数据。长度符合他发送的长度就可以了。这些进制,只不过方便我们使用和研究。。
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
数据本不分16进制,8进制,10进制,只是为了让人看懂。
任何数据,都是0和1

楼主连这个基本概念都是外行,串口发送能不出问题??

楼主应该先连其它能显示接收数据的设备,调试好,再连打印机。

说不定,楼主只是搞错了打印机能接收的数据格式。
此帖出自WindowsCE论坛
 
 
 

回复

121

帖子

0

TA的资源

一粒金砂(中级)

7
 
串口发送的数据就是以数据的二进制形式按位发送的,16进制仅仅是一种表示形式而已,效果都是一样的。
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 3 楼 panzekai 的回复:
bootloader我也看了很久,可是还是云里雾里的,嵌入式要慢慢了,急不得。


说有感触阿!

不要着急,问题还是得慢慢分析解决的
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用 7 楼 iwillbeback008 的回复:
引用 3 楼 panzekai 的回复:
bootloader我也看了很久,可是还是云里雾里的,嵌入式要慢慢了,急不得。


说有感触阿!

不要着急,问题还是得慢慢分析解决的


在工作呀,这问题两天都还没解决,不急不行呀,两位老兄!!
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

10
 
引用 5 楼 yhp1888 的回复:
数据本不分16进制,8进制,10进制,只是为了让人看懂。
任何数据,都是0和1

楼主连这个基本概念都是外行,串口发送能不出问题??

楼主应该先连其它能显示接收数据的设备,调试好,再连打印机。

说不定,楼主只是搞错了打印机能接收的数据格式。

我用电脑的程序直接向打印机发送16进制的数据都可以打印;用wince编译过的程序,在那块板上就没反应了,且我用调试模式跟踪过,串口是打开的,发送数据给打印机串口就是没有效果!!
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

11
 
wsprintf(szPort, L"COM%d:", portNo);   
    //打开串口   
    m_hComm = CreateFile(   
        szPort,   
        GENERIC_READ | GENERIC_WRITE,   //允许读和写   
        0,                              //独占方式(共享模式)   
        NULL,   
        OPEN_EXISTING,                  //打开而不是创建(创建方式)   
        0,   
        NULL   
        );   
      
    if (m_hComm == INVALID_HANDLE_VALUE)   
    {   
        // 无效句柄,返回。         
        TRACE(_T("CreateFile 返回无效句柄"));   
        return FALSE;            
    }   
      
    // 得到打开串口的当前属性参数,修改后再重新设置串口。   
    // 设置串口的超时特性为立即返回。   
      
    if (!GetCommState(m_hComm,&commParam))   
    {   
                  TRACE(_T("GetCommState error"));   
        return FALSE;   
    }   
      
    commParam.BaudRate = baud;                  // 设置波特率     
    commParam.fBinary = TRUE;                   // 设置二进制模式,此处必须设置TRUE   
    commParam.fParity = TRUE;                   // 支持奇偶校验     
    commParam.ByteSize = databits;              // 数据位,范围:4-8     
    commParam.Parity = NOPARITY;                // 校验模式   
    commParam.StopBits = stopbits;              // 停止位     
      
    commParam.fOutxCtsFlow = FALSE;             // No CTS output flow control     
    commParam.fOutxDsrFlow = FALSE;             // No DSR output flow control     
    commParam.fDtrControl  = DTR_CONTROL_ENABLE;   
    // DTR flow control type     
    commParam.fDsrSensitivity   = FALSE;          // DSR sensitivity     
    commParam.fTXContinueOnXoff = TRUE;         // XOFF continues Tx     
    commParam.fOutX = FALSE;                    // No XON/XOFF out flow control     
    commParam.fInX  = FALSE;                     // No XON/XOFF in flow control     
    commParam.fErrorChar = FALSE;               // Disable error replacement     
    commParam.fNull = FALSE;                    // Disable null stripping     
    commParam.fRtsControl = RTS_CONTROL_ENABLE;   
    // RTS flow control     
    commParam.fAbortOnError = FALSE;            // 当串口发生错误,并不终止串口读写   
      
    if (!SetCommState(m_hComm, &commParam))   
    {   
        TRACE(_T("SetCommState error"));           
        return FALSE;   
    }   
      
      
    //设置串口读写时间   
    COMMTIMEOUTS CommTimeOuts;   
    GetCommTimeouts (m_hComm, &CommTimeOuts);   
    CommTimeOuts.ReadIntervalTimeout = MAXDWORD;     
    CommTimeOuts.ReadTotalTimeoutMultiplier = 0;     
    CommTimeOuts.ReadTotalTimeoutConstant = 0;      
    CommTimeOuts.WriteTotalTimeoutMultiplier = 10;     
    CommTimeOuts.WriteTotalTimeoutConstant = 1000;     
      
    if(!SetCommTimeouts( m_hComm, &CommTimeOuts ))   
    {   
        TRACE( _T("SetCommTimeouts 返回错误") );   
        return FALSE;   
    }   
      
  //  m_pPortOwner = pPortOwner;     
      
    //指定端口监测的事件集   
    SetCommMask (m_hComm, EV_RXCHAR);   
      
    //分配设备缓冲区   
    SetupComm(m_hComm,1024,1024);   
      
    //初始化缓冲区中的信息   
    PurgeComm(m_hComm,PURGE_TXCLEAR|PURGE_RXCLEAR);         
    m_hReadCloseEvent = CreateEvent(NULL,TRUE,FALSE,NULL);

调试过m_hComm都分配有地址,发送数据给打印机:
         char c[4];
        memset(c,'\0',4);

        //开锁
        c[0] = 0x0A;
        c[1] = 0x0A;
        c[2] = 0x0A;
        c[3] = 0x0A;
        bWriteStat=WriteFile(m_hComm,c,4,&dwBytesWrite1,NULL);
如果是在电脑上,打印机这样是有反应的;可是在wince板上就没反应了,各位高手帮忙看看哪里用错了??       
此帖出自WindowsCE论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

12
 
现在你能排除,开发板上面的串口部分的硬件肯定没有错吗?串口连接没错吗?假如没错,那么问题肯定在串口驱动上面的。而不关是否是16进制了。你的串口接收不到数据。硬件软件都可能有错,先从硬件排除问题,然后再找软件的错误。
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

13
 
我看楼主还是先把这板上的串口接在电脑上,看能不能接收到数据先。
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

14
 
楼主你首先要确认这些数据是否已经发送出去了再做下一步考虑
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

15
 
接下去就得分析驱动了。
此帖出自WindowsCE论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 14 楼 wjf_zjut 的回复:
接下去就得分析驱动了。

怎分析驱动呀??
此帖出自WindowsCE论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

17
 
我觉得你完全可以借助串口调试助手来进一步定位出原因具体在那一方面,现在产生你这个问题的原因可能性太多,软件与硬件都可能有问题…
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表