8949|30

86

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急急急急——高分求救,可加分!串口通讯相关,打印相关,wince + vs2005 + c/c++ [复制链接]

配置:wince6.0 , vs2005
使用语言: c/c++
问题背景:现在有一个类似于PDA的终端设备,使用RS232片,需要驱动其打印机来打印由磁卡扫描得到的数据,可是,使用串口COM均失败。使用GetLastError得到的错误为55,即设备不可用。首要问题,如何解决打印相关的问题,同事计划使用GPIO来模拟串口通信,实现打印功能,同时串口通信也可在磁卡扫描传输数据时使用。请问,是否可实现,如果可以,请详细说明开发过程,(对硬件相关知识了解较少);如果,不可以,请看看是否有其他方法可以完成。
问题解决后,高分封送,谢谢
此帖出自WindowsCE论坛

最新回复

学习一下  详情 回复 发表于 2009-8-3 15:42
点赞 关注
 

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
既然是WINCE6,那么硬件平台肯定不止一个串口。
RS232就是串口经过了RS232协议电平转换芯片出来的信号,完全不需要IO口来模拟。

你应该先确认为什么你们的PDA无法使用COM口。一般都会将串口(COM口)给开放给上层的,最好先跟PDA供应方确认一下,免得浪费你们团队的时间。
还有,既然PDA不是你们的,又如何“用GPIO口模拟串口”呢?
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
使用com1,com2,com3都有同样的错误
我会尽早确认com口是否可用
板子厂家已经给我们了,他们对板子的使用说明也都有,可是,我不知道要怎么利用这些东西,控制了GPIO的结构写好了,可我没弄明白要怎么样通过控制GPIO的各个引脚来驱动打印机打印数据,请高手指教,谢谢
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

4
 
现在使用的是样板,具体情况:一个主板、一个打印机的板子,打印机和主板有5条线连接,5条蓝色的、一条黑色的,在打印机上连接着数据插槽的高5位(或者第五位,我不确定),在打印机上有3个232片
我实在对硬件懂得很好,能知道一些的都请告诉我一下,只要有帮助一定给分,谢谢
此帖出自WindowsCE论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

5
 
不好意思,弄错了,字太小没看清,不是232,是223,这一点不用考虑了,谢谢
硬件知识懂得比较少,如果哪位大虾可以大致的讲一下,不胜感激
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
com 不可用应该是串口驱动有问题,用gpio模拟串口有点麻烦,也可能不稳定,最后再考虑这个方案吧.lz做的我以前也弄过,接收磁卡读卡器信息,和操作串口打印机打印,都是用串口完成的.
此帖出自WindowsCE论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

7
 
显然打印机是UART 232通讯协议。不过确认一下是不是MAX232或者ISL232之类的RS232协议转换芯片,或者直接量一下电压是不是+/-10V的。如果是,那么就是标准的RS232了。

最好不好指望用GPIO口模拟串口,尤其是在操作系统里面,非常麻烦。

设备开放给上层的串口不一定就是COM1 COM2 COM3的,最好遍历一下,从1到10都试一下。像我们的机器一般就是3、5、6的。
此帖出自WindowsCE论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 5 楼 Reallyu 的回复:
com 不可用应该是串口驱动有问题,用gpio模拟串口有点麻烦,也可能不稳定,最后再考虑这个方案吧.lz做的我以前也弄过,接收磁卡读卡器信息,和操作串口打印机打印,都是用串口完成的.


能否给我讲解一下,还有,就是说能否给我一个大概的框架,嘿嘿,如果可以借鉴一下你的源代码,那我万分感谢,我现在真得很着急,几近崩溃了——一窍不通啊
我的邮箱:snow_haoxue@yahoo.com.cn
如果可以,发些相关资料给我好么
此帖出自WindowsCE论坛
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(初级)

9
 
如果说串口通信的源代码很简单,网上有封装好的ce可用的CSerial类,用起来很方便.如果lz连CreateFile打开串口都出错,那就说明串口驱动有问题,需要修改驱动.网上也可以下载ce上用的串口调试助手,可以用来判断lz的串口驱动和硬件是否有问题,lz可以google or baidu一下
此帖出自WindowsCE论坛
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(中级)

10
 
我给你一个打印的例子
想要找我啊!
zhuyaqi2004@sohu.com
此帖出自WindowsCE论坛
 
 
 

回复

96

帖子

0

TA的资源

一粒金砂(初级)

11
 
引用 6 楼 shuiyan 的回复:
显然打印机是UART 232通讯协议。不过确认一下是不是MAX232或者ISL232之类的RS232协议转换芯片,或者直接量一下电压是不是+/-10V的。如果是,那么就是标准的RS232了。

最好不好指望用GPIO口模拟串口,尤其是在操作系统里面,非常麻烦。

设备开放给上层的串口不一定就是COM1 COM2 COM3的,最好遍历一下,从1到10都试一下。像我们的机器一般就是3、5、6的。


我测试了,这回,1到10的返回错误都变成2了(系统找不到指定的文件)
一下是我写的测试代码
for (i=1;i<11;i++)
        {
                sprintf(chCom,"COM%d:",i);
                Du_DebugMsg(chCom);
                hPrinter = CreateFile(chCom, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
                errCodeA = GetLastError();
                if(INVALID_HANDLE_VALUE == hPrinter)
                {
                        sprintf(chrErrMsg,"errMassage %u",errCodeA);
                        Du_DebugMsg(chrErrMsg);                       
                }
                if (i<11 && INVALID_HANDLE_VALUE != hPrinter)
                {
                        sprintf(chrSucMsg,"Success COM %d",i);
                        Du_DebugMsg(chrSucMsg);
                        break;
                }
        }

void Du_DebugMsg(char *szMsg)
{
#if 1
        FILE *fp=fopen("\\windows\\debug.txt","a");
        if(fp!=NULL)
        {
                fprintf(fp, "%s\n", szMsg);
                fclose(fp);
        }
#endif
}

这样话要怎么解决呢?
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
引用 8 楼 Reallyu 的回复:
如果说串口通信的源代码很简单,网上有封装好的ce可用的CSerial类,用起来很方便.如果lz连CreateFile打开串口都出错,那就说明串口驱动有问题,需要修改驱动.网上也可以下载ce上用的串口调试助手,可以用来判断lz的串口驱动和硬件是否有问题,lz可以google or baidu一下


你说的方法我会试一下的,不过,同事说磁卡信息读取一定要用到GPIO的,我不是很明白,你能否大概讲一下,你是如何把磁卡信息读取和打印链接在一起的,同时,它们分别是怎样实现的,谢谢^_^等待中……
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

13
 
1.你的串口通不通,用超级终端看一下
2.您的打印机驱动方式是不是直接给串口ASKII码就可以的
此帖出自WindowsCE论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

14
 
CreateFile的第一个参数用_T(""),你这样写是不认的,字符集问题。
搜一个wince或者wm/ppc下的串口测试程序,用一下就知道了。
或者你能导出注册表,看一下就行了。

磁卡信息是另外一回事了,跟串口无关,如果不是标准接口(I2C, SPI, UART, USB等),那就只能用GPIO模拟时序来读取了。
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(中级)

15
 
fopen是用char*

CreateFile用TCHAR*,

你自己写的代码还是从vc转过来的。

先从eeworld上搜一些ce下串口的代码

http://download.eeworld.net/user/lenux
这个就有一个串口的测试类。
此帖出自WindowsCE论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

16
 
引用 14 楼 lenux 的回复:
fopen是用char*

CreateFile用TCHAR*,

你自己写的代码还是从vc转过来的。

先从eeworld上搜一些ce下串口的代码

http://download.eeworld.net/user/lenux
这个就有一个串口的测试类。


不管是TChar或者char现在都会有同样的错误,GetLastError返回全部是2(无法打开指定文件)

代码下载了,可是,evc的project在现在的环境下怎么打开呢,vs2005+c/c++
此帖出自WindowsCE论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

17
 
察看其注册表,发现:driver/active下,只有COM3(针对USB的),COM8(IrComm),在CreateFile时,这两个口也会返回2的错误,这个正常么?应该是怎么样的?
此帖出自WindowsCE论坛
 
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

18
 
在vc2005中打开project,转换,就行。

你能确保你的板子上的串口都是好的吗?

PS
你说的223是什么?
此帖出自WindowsCE论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

19
 
引用 17 楼 lenux 的回复:
在vc2005中打开project,转换,就行。

你能确保你的板子上的串口都是好的吗?

PS
你说的223是什么?


223就不要考虑了,呵呵,一个不小心就弄错了……

重新检查了程序,发现代码确实有点问题,在char和TChar的地方,系统不检查报错或者警告。修改以后,发现,COM3(红外的)和COM8(USB的)是可以用的,可现在又出现了新的问题:一,虽然有两个口可以用,可以是,打印机还是 不反应;二,从打印机与板子的连接上看,有可能,直接跨过了串口控制芯片,与GPIO连接了(同事说的)。情况是这样的:有一条带有九针插口线把主板和pc机直接链接在一起,使用主板上侧面九针的插槽,在这个插槽的上方,有九根针(排布方式如同九针插槽),看起来他们好像并联在这个地方。打印机的连接线直接焊接在这九根针脚上,只是用了5根线(4蓝一黑)

如果,打印机直接与GPIO链接,我要怎么样对GPIO进行操作,来驱动打印机,并传输数据呢?
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

20
 
端口没有通,那就调驱动啊!看看注册表里设置都对不对,真不知道你们以前怎么开发的!
此帖出自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
快速回复 返回顶部 返回列表