python调用Moxa PCOMM Lite通过串口Zmodem协议发送文件

晶刚1105 2017-05-03 10:24:23
代码如下所示:
#encoding=utf-8

from ctypes import *

dll = windll.LoadLibrary("PCOMM.DLL")
port = 11 # 指定串口COM11
dll.sio_ioctl(port, 16, 0x00 | 0x03 | 0x00) # 115200, 无校验,8位数据位,1位停止位
dll.sio_open(port) #打开串口
#dll.sio_write (port, 'rz\n', 5);
def callback_fun(xmitlen, buflen, pbuf, flen):
print (xmitlen, flen)
return xmitlen
CALLBACK = WINFUNCTYPE(c_int, c_long, c_int, POINTER(c_char), c_long)
ccb = CALLBACK(callback_fun)
print ('ret=')
#ret = dll.sio_FtZmodemTx(port, 'c:\test.txt', ccb, 27)
ret = dll.sio_FtZmodemTx(port, "C://work//test.txt",ccb,27)
print (ret)
dll.sio_close(port)

为什么ret = -5???也就是不能打开文件
...全文
2448 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
m0_37550656 2018-02-12
  • 打赏
  • 举报
回复
要发送的文件不在C盘上
tianfang 2018-02-08
  • 打赏
  • 举报
回复
C盘有访问权限控制,单独一个程序测试一下,直接写个文件试试是否可以写
m0_37550656 2018-02-08
  • 打赏
  • 举报
回复
我也遇到了同样的问题,按照网上的另一个帖子使用ymodem 也是返回-5,请问有那位大神知道为什么,谢谢
晶刚1105 2017-05-03
  • 打赏
  • 举报
回复
新手一枚,请大神赐教啊~~~~~~~~~~~!!!!!!!!!
MOXA PComm Pro Windows 2000、Windows NT,Windows 95/98下的专业串口应用软件开发工具包 大多软件开发者在使用Microsoft的Win32 COMM API时感到非常繁琐。因为 Win32 COMM API的函数库比较少,而且语法十分复杂,所以在Windows NT、 Windows 95/98下猹发串口应用软件会感到相当困难。 MOXA PComm Pro提供您一个理想的解决方案,不论您使用哪一种多串口卡,如 标准的COM、Digi、 Equinox、Moxa或者其它品牌,PComm Pro都是您最合适的 开发工具,它能真正帮助您解决困扰。 可快速帮助您完成串口通信应用开发 可协助您排除两台设备之间的通信问题 可评测串口的效能状况 MOXA PComm Pro提供专为异步通信设计的API函数库,没有Microsoft Win32复杂难用的问题,大大节 省了开发时间和成本。 另外,MOXA PComm Pro还提供许多功能强大的辅助工具,如数据撷取、效能评测等,帮助您迅速排除 在应用软件开发时串口通信所发生的问题。 容易开发 MOXA PComm Pro提供专为串口通信而设计的50多个API函数,支持VB、C/C++和Delphi等多种编程 语言,在功能和应用上都不会像Microsoft Win32 COMM API那样让开发者感到困扰。 MOXA PComm Pro还支持ZModem、YModem、XModem、Kermit和ASCII等多种档案传输协议,使得 档案的上载和下载程序都变得比以往来得轻松。 容易排难 MOXA PComm Pro的数据撷取功能和PC机上的数据撷取功能相似,它利用了2个标准串口,让您在 利用RS-232的传输时通过时间标记来设置参数、获取通信数据和监控信号状态等,串口的传输速 率可高达921.6K bps。您也可以将各式各样的数据和状态存到硬盘上以备日后分析。只要通过一 条电缆的连接,线上数据监控即可通畅无阻。 高兼容性 MOXA PComm Pro不仅支持标准的串口,同时与Digi、Equinox、Moxa等支持Microsoft Win32 COMM API的多串口卡兼容。 特点 提供简单易用的API(超过50个函数) 支持ZModem、YModem、XModem、Kermit和ASCII等 档案传输协议 支持VB、C/C++和Delphi界面,并提供范例程序 串口通信速率可达921.6K bps 可同时开启多个终端窗口(VT100,ANSI) 提供数据撷取功能以了解串口通信状态(附电缆线 ) 提供串口通信效能评测功能 与任何支持Win32 COMM API的标准串口兼容 免费升级 系统要求 与Intel微处理器兼容的PC Windows 2000,Windows NT(3.51/4.0)或Windows 95/98 操作系统 2.5MB的硬盘空间
Moxa是一家做了几十年工业串口卡、串口服务器之类设备的公司,PComm Lite是一套易用性、可靠性久经考验串口编程开发包。相比用API或mscomm控件开发简单太多了。 版本:目前最新版是Version 1.6 Released May 14, 2012 支持XP/win7, 32/64bit的库都有,开发环境支持VC/VB/Delphi。注意可以会搜到另外一个Version 2.6. Released Jul 8, 2008,那是在WIN9x/NT4用的,不要看版本号高下错了。 使用方法:运行安装后有类库、例程、帮助和几个小工具。关键的有四个文件pcomm.h/pcomm.lib两个文件复制到项目目录并引用,pcomm.dll丢到windows\system32下或跟应用程序放在一起,pcomm.chm帮助备查。 函数介绍:整个库包含50多个函数,最常用的也就10来个: 打开、关闭、设波特率的:sio_open ()、sio_close()、sio_baut() 发送数据的:sio_putch(),sio_write() 接收数据的:sio_getch(),sio_read() 查询输入输出缓冲区状态的:sio_iqueue(), sio_oqueue() 有时可能要设读写超时:sio_SetReadTimeouts(), sio_SetWriteTimeouts() 这些函数见名知义,用法查一下PComm.chm就行了。 编程方法: 接收数据一般免不了要开线程的,在接收线程里sio_iqueue()看一下有没有数据,有就处理,没就Sleep()一会。接收数据时它至少会帮你缓冲几十k,一般也不会丢数据。也可以用sio_term_irq()指定接收一定长数据数据就调用一个CALLBACK函数。 这些基本就齐活了。需要控制DTS/RTS、自动流控制都有,甚至还有Xmoderm/Ymoderm/Zmoderm发送文件。如果要Modbus之类的协议就要自己写了。 与其它串口开发方式比较:简单地说API是基础零件,自己做起来麻烦。MSComm控件、CSerialPort类是实验室产品,Pcomm lite是工业成熟产品。

37,717

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

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