串口通信之发送文件

Link_ 2012-03-28 03:43:08
我现在应上面要求要作个串口通信 ,不使用微软的那个Active控件 完全用windows API实现 现在我实现了 发送字符和接收字符 ,但是上面今天又说后面这个是提供给别人做开发 需要扩展一个发送文件功能 ,在下迷茫了 希望路过的大牛们 为我指点迷经啊…… 在此先谢谢了
...全文
573 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kaile 2012-03-30
  • 打赏
  • 举报
回复
Pcomm lite 串口库 好东西

CSerialport也不错
Link_ 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
http://wenku.baidu.com/view/e2f4a86c1eb91a37f1115cb3.html
你从这个网址看例子,用API操作串口就那几个函数,我当初把它封装成DLL一直在用.关于你打开串口失败,你看看是不是参数没配置对
[/Quote]

兄弟你实现传输文件没 实现了话 给我点思路和重要的API吧
Link_ 2012-03-30
  • 打赏
  • 举报
回复
谢谢楼上的兄弟 我没打开串口失败 我现在实现了发送接收字符 但是发送文件没点思路 所以来请牛人解答一二
Link_ 2012-03-30
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 的回复:]
发送文件根发送字符差不多.
不过,你看看超级终端,可以看到发送文件,会使用一种协议. 当然,如果串口另一端的 PC机或者单片机速度够快的话,你可以使用xmodem协议,一次发送1K字节.
当然,你要注意,流控制方式,停止位,奇偶校验等问题.
我发送的时候,为了简单,都设置无流控制.
[/Quote]

兄台给两个API 提醒下啊
xiaohuh421 2012-03-30
  • 打赏
  • 举报
回复
发送文件根发送字符差不多.
不过,你看看超级终端,可以看到发送文件,会使用一种协议. 当然,如果串口另一端的 PC机或者单片机速度够快的话,你可以使用xmodem协议,一次发送1K字节.
当然,你要注意,流控制方式,停止位,奇偶校验等问题.
我发送的时候,为了简单,都设置无流控制.
hdg3707 2012-03-29
  • 打赏
  • 举报
回复
另外,工程一定要改成多字节的,VS2008后默认的是UNICODE,你别是因为这个导致串口打开失败
hdg3707 2012-03-29
  • 打赏
  • 举报
回复
http://wenku.baidu.com/view/e2f4a86c1eb91a37f1115cb3.html
你从这个网址看例子,用API操作串口就那几个函数,我当初把它封装成DLL一直在用.关于你打开串口失败,你看看是不是参数没配置对
Link_ 2012-03-29
  • 打赏
  • 举报
回复
来点人 解决下下啊
Link_ 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
借问楼主一个问题,我用ActiveX控件做没有任何问题,发送字符和接收字符都行。看到网上说用windows API函数也可以实现的时候,自己动手做了,但是打开串口时返回的却总是返回INVALID_HANDLE_VALUE,代码如下:
m_hComm = CreateFile((LPCTSTR)szPort,GENERIC_READ | GENERIC_WRITE,0,NULL, PEN_EX……
[/Quote]

兄弟要细心哈 m_hComm=CreateFile((LPCTSTR)szPort,//COM1口
GENERIC_READ|GENERIC_WRITE, //允许读和写
0, //独占方式
NULL,
OPEN_EXISTING, //打开而不是创建
FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, //重叠方式
NULL);
打开创建那里PEN_EXISTING 不会报错? 在你这段代码我只看到了这个错误
梦话王子 2012-03-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
发送数据和发送文件是一样的,在发送过程中,串口不知道发的数据来源是什么.关于发送文件,你只要从文件读出数据放在一个缓冲区里,再调用发送函数就行了.接收方收到后再根据发送文件的协议进行保存文件.
关于5楼的问题:szPort应该是"COM1","COM2","COM3"等。另外,你还得保证确实有这个串口并且这个串口不能被正在打开。
[/Quote]

同样的一台电脑,我用ActiveX控件做好测试没有任何问题。之后想用另一种方法来实现,结果就出现了上面的问题。com口也没有任何问题,我拿之前的用ActiveX控件做的程序测试过。
hdg3707 2012-03-28
  • 打赏
  • 举报
回复
发送数据和发送文件是一样的,在发送过程中,串口不知道发的数据来源是什么.关于发送文件,你只要从文件读出数据放在一个缓冲区里,再调用发送函数就行了.接收方收到后再根据发送文件的协议进行保存文件.
关于5楼的问题:szPort应该是"COM1","COM2","COM3"等。另外,你还得保证确实有这个串口并且这个串口不能被正在打开。
梦话王子 2012-03-28
  • 打赏
  • 举报
回复
借问楼主一个问题,我用ActiveX控件做没有任何问题,发送字符和接收字符都行。看到网上说用windows API函数也可以实现的时候,自己动手做了,但是打开串口时返回的却总是返回INVALID_HANDLE_VALUE,代码如下:
m_hComm = CreateFile((LPCTSTR)szPort,GENERIC_READ | GENERIC_WRITE,0,NULL, PEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL );
if (m_hComm == INVALID_HANDLE_VALUE)
55555555……楼主帮忙看看。
梦话王子 2012-03-28
  • 打赏
  • 举报
回复
借问楼主一个问题,我用ActiveX控件做没有任何问题,发送字符和接收字符都行。看到网上说用windows API函数也可以实现的时候,自己动手做了,但是打开串口时返回的却总是返回INVALID_HANDLE_VALUE,代码如下:
m_hComm = CreateFile((LPCTSTR)szPort,GENERIC_READ | GENERIC_WRITE,0,NULL, PEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED, NULL );
if (m_hComm == INVALID_HANDLE_VALUE)
55555555……楼主帮忙看看。
zhjianjun 2012-03-28
  • 打赏
  • 举报
回复
自己写多累啊,人家早有用了几十年的pcomm lite了,支持多种文件传送协议

http://skywolfblog.blog.163.com/blog/static/177902180201221703412817/
http://download.csdn.net/detail/zhjianjun/3741664

Link_ 2012-03-28
  • 打赏
  • 举报
回复
怎么的 怎么的 别沉了

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧