社区
PowerBuilder
帖子详情
如何在PB中实现对并行口操作??在线等待,急,急,急!!!!!!!
yang_jl
2001-11-24 09:13:35
有兴趣加入:OICQ:2016970,表明:PB!!呵呵
...全文
111
8
打赏
收藏
如何在PB中实现对并行口操作??在线等待,急,急,急!!!!!!!
有兴趣加入:OICQ:2016970,表明:PB!!呵呵
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taitan
2001-11-24
打赏
举报
回复
I agree with liu7537
liu7537
2001-11-24
打赏
举报
回复
这个问题我觉得超出了一个PowerBuilder程序员的职责!
从前我写过一个POS机管理软件,其中控制POS机钱箱的开关的操作就是有一个C++高手给我写的DLL,然后我在PB种调用。
其实硬件控制,尤其是单片机操作,同样是一门博大精深的学问,它和PB完全是两个不同方面的东西,一个人很难在这两方面都有所建树的。建议你跟硬件控制高手合作。
liu7537
2001-11-24
打赏
举报
回复
这个问题我觉得超出了一个PowerBuilder程序员的职责范围!其实使用PowerBuilder他最大的强项在与数据库系统的开发设计,而不是搞计算机数据通讯,后者是C、C++的天下!建议您跟C++程序员合作,由他编写DLL,然后您在PowerBuilder里面调用!
我曾经写过一个POS机上使用的商业管理软件,其中关于控制POS机钱箱的开关等操作都是由别人编程DLL,然后我在PowerBuilder里面调用的。
因为硬件控制,尤其是单片机的编程同样是一门博大精深的学问,它与PB完全是两个方面的东西,一个人很难在这两方面都有所建树的!
killerdanny
2001-11-24
打赏
举报
回复
下面是两位高手以不同方法来处理对并口发送字符的方法,希望对大家有所帮助
第一种方法:
作者:JiangAn anjiang@writeme.com
我是通过调用API实现串口调用的,根据TAPI介绍,串口调用与并口调用并没有什么不同,下面的
程序可试一试(我只实现串口,并口并没有试过,希望能有一点参考作用):
首先定义外部函数:
Function Boolean CloseHandle(ulong hObject ) Library "kernel32.dll"
FUNCTION boolean ReadFile(ulong fhand, &
ref string lpbuffer, &
ulong numbyte, &
ref ulong bytesread, &
ulong lpover) LIBRARY "kernel32.dll"
FUNCTION ulong CreateFileA(ref string fname, &
ulong f_access, &
ulong f_share, &
ulong f_sec, &
ulong f_create, &
ulong f_flag, &
ulong f_attrib) LIBRARY "kernel32.dll"
Function Boolean WriteFile(uLong handle,&
ref string lpbuffer, &
ulong numbytes, &
ref ulong bytesread, &
ulong lpOverLaped) Library "Kernel32.dll"
Function Boolean GetCommProperties(ulong hFile,&
ref COMMPROP lpCommProp ) Library "Kernel32.dll"
Function Boolean BuildCommDCBA(ref string lpDef,&
ref DCB lpDCB ) Library "Kernel32.dll"
Function Boolean SetCommState(ulong hCommDev,&
ref DCB lpdcb ) Library "Kernel32.dll"
Function Boolean GetCommState(ulong hCommDev,&
ref DCB lpdcb ) Library "Kernel32.dll"
Function ulong GetLastError() Library "Kernel32.dll"
Function Boolean SetCommTimeouts(ulong hCommDev,&
ref COMMTIMEOUTS lpctmo ) Library "Kernel32.dll"
Function Boolean PurgeComm(ulong hCommDev, &
ulong fdwAction ) Library "Kernel32.dll"
实例变量定义:
ulong iu_file
string is_buffer//数据缓冲
string is_valid_num = "123" //有效数据
第二是初始设置
string ls_com,ls_commset
dcb lst_dcb
ls_com = "COM1"
//ib_reading = true
//打开串口
iu_file = CreateFileA(ls_com,3221225472,0,0,3,128,0)
if (iu_file < 0) then
messagebox("错误","无法打开" + ls_com + " #" + string(getlasterror (
)),StopSign!)
end if
//初始化DCB
ls_commset = "4800,N,8,1"
if (Not BuildCommDcbA ( ls_commset, lst_dcb )) then
messagebox("错误","无法创建DCB" + " #" + string(getlasterror ( )),StopSign!)
end if
//设置串口
if (Not setcommstate ( iu_file, lst_dcb )) then
messagebox("错误","无法设置串口"+ ls_com + " #" + string(getlasterror (
)),StopSign!)
end if
//设置超时
commtimeouts lst_to
lst_to.readintervaltimeout = 4294967295 //MAXDWORD
//lst_to.readtotaltimeoutconstant = 60000
//lst_to.readtotaltimeoutmultiplier = 10
SetCommTimeouts(iu_file, lst_to)
第三步:读或写(例子中的是读,写可用writefile)
ulong lu_bytesread, lu_numbytes
string ls_buff
ulong lstr_locstruct //注意!这是ULONG 而不是STRUCT
ls_buff = space(100)
setnull(lstr_locstruct)
lu_numbytes = 100
if (not readfile ( iu_file, ls_buff, lu_numbytes, &
lu_bytesread, lstr_locstruct)) then
messagebox("错误","无法读取 #" + string(getlasterror ( )),StopSign!)
timer(0)
else
if( lu_bytesread > 0) then
is_buffer += trim(ls_buff)
mle_1.text += trim(ls_buff)
//处理数据
this.wf_is_valid_receieve ( ) //检验函数
end if
end if
第四步:完成后释放端口
closehandle ( iu_file )
具体函数使用方法可参见MSDN中的TAPI。
有时可能用控件做起来更简单一些(如SCOMM、SAX COMM等)。
第二种方法:作者主页:http://niceera.yeah.net, 点这里下载相关文件.(还需要另外两个文件,它们在C++Builder 4和Delphi 4中都有,Borlndmn.dll和vcl40.bpl)
作者前些时间用C++Builder4专为PB写的一个向并口发送数据的DLL,希望对大家有帮助。
Function Boolean PrepareForPrint(String port) Library "rawLptDrv.dll"
打开指定的并口,比如“LPT1”;
Function Boolean RawPrint(String dt,integer ln) Library "rawLptDrv.dll"
向并口发送数据;
Function Boolean OverPrint() Library "rawLptDrv.dll"
关闭并口。
---------------------------------------------------
下面的函数是为了测试用的。
Function Boolean ShowPrinterStatus(integer x,integer y) Library "rawLptDrv.dll"
Function Boolean HidePrinterStatus() Library "rawLptDrv.dll"
Subroutine calltest() Library "rawLptDr.dll"
---------------------------------------------------
如果运行时报告什么错误,可能是缺少 C++Builder4 的一些DLL。
smartdraw
2001-11-24
打赏
举报
回复
my oicq:8621265
yang_jl
2001-11-24
打赏
举报
回复
通过并行口与单片机连接,通过并行口与单片机相连、向它发送数据、取得单片机的闲/忙、能否做到对每个针脚操作、能否取得并行口地址,总之问题多多啊,呵呵~~以前没有接触过
yang_jl
2001-11-24
打赏
举报
回复
你有QQ号码??直接面说.呵呵
liu7537
2001-11-24
打赏
举报
回复
你想对并行口做什么操作呢?
并行 vs串行、同步 vs 异步、有线 vs 无线:嵌入式开发者的协议终极指南
想象一下,你要从A地运一箱苹果到B地。有两条路可选:一条是宽敞的八车道高速公路,能一次运8个苹果,但路况复杂;另一条是窄窄的单行道,只能一个苹果一个苹果地运,但简单可靠。这就是和的区别。:一次传输多位数据,就像八车道公路。典型例子是老式打印机的并口(Parallel Port)或早期的PC内存总线。它的核心特点是,因为多条数据线同时工作,带宽高得飞起。:数据一位一位按顺序传输,像单行道。现代设备里,串行通信几乎无处不在,比如USB、UART、SPI、I2C。它的优势是,布线少,抗干扰能力强。
TowardsDataScience 博客
中
文翻译 2019(四百八十二)
这篇文章讨论了数据科学和机器学习
中
一个基本算法的基本构建模块:线性回归。我讨论了优化用于预测目标值 y 的回归权重或参数的两种方法。虽然最小二乘法对于一个要素(x)相当简单,但梯度下降更常用于大型要素集,因为同时计算所有权重会更加复杂。这篇文章的目的是让读者深入了解基本算法(如线性回归)的“本质”,以确保正确的使用和解释。如果你想了解更多,请查看本系列关于逻辑回归的下一篇文章!我希望你觉得这篇文章很有用,并且像往常一样,欢迎在评论
中
发表意见!
七月
在线
公开课笔记(二十八)
下面呢我们给出时间来简单的来跟大家聊一聊。标签传递算法。因为咱刚才一直讲的是。无监度分类。有些时候哈有些样本是。带标记的大多数是不带标记的对吧?这种就是半监督这种半监读方式,最简单的一种思路。标签传递算法。并且标签传递算法是在实践当
中
用的哟。就是你比方说咱的微博那些数据做聚类。你比方说咱那个某一个网站,比方说是做电影的网站哈,然后我想对他对用户的评论做做分类,做专确传递,对吧?也是可以这么去做的。他想法就是将标记的样本,他不是有标记吗?
深度学习:智能时代的核心驱动力量
内容简介 科技巨头纷纷拥抱学习,自动驾驶、AI、语音识别、图像识别、智能翻译以及震惊世界的 AlphaGo,背后都是学习在发挥的作用。学习是人工智能从概念到繁荣得以
实现
的主流技术。经过学习训练的计算机,不再被动按照指令运转,而是像自然进化的生命那样,开始自主地从经验
中
学习。 本书作者特伦斯 · 谢诺夫斯基是人工智能十大科学家之一、学习先驱及奠基者,亲历了学习在 20 世纪 70 年代到 90 年...
[转]高负载并发网站架构分析
由于自己正在做一个高性能大用户量的论坛程序,对高性能高并发服务器架构比较感兴趣,于是在网上收集了不少这方面的资料和大家分享。希望能和大家交流 msn: defender_ios@hotmail.com ——————————————————————————————————————— ? 初创网站与开源软件 6 ? 谈谈大型高负载网站服务器的优化心得! 8 ? Lighttpd+Squid+Apach
PowerBuilder
1,108
社区成员
66,453
社区内容
发帖
与我相关
我的任务
PowerBuilder
PowerBuilder 相关问题讨论
复制链接
扫一扫
分享
社区描述
PowerBuilder 相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章