怎么实现两个串口同时接收下位机发送的bmp数据

qq_22905051 2018-01-06 10:02:21
两个指纹模组,需要同时将采集的数据通过串口传到上位机里,为什么要等一个模组数据传输完成后,采开始传输第二个模组的数据,我两个模组是同时发送的数据。定义2个接受函数
//添加接收函数
serialPort1.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived_1);
serialPort2.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived_2);
为什么必须要等第一个完成,才会触发第二个串口的接受事件??
//接收事件
private void port_DataReceived_1(object sender, SerialDataReceivedEventArgs e)
private void port_DataReceived_2(object sender, SerialDataReceivedEventArgs e)

可以实现同步传送吗?,不要一先一后,这样很浪费时间,哪位帅哥美女指导一下,不胜感激!
...全文
611 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_22905051 2018-01-11
  • 打赏
  • 举报
回复
引用 14 楼 a295281315 的回复:
因为这2个串口的接收都是在主线程执行的,传输的字节也多,当一个设备传输bmp数据时 另一个接收事件就被阻塞了。 用多线程解决 ~~~
可以说一下具体要怎么实现吗?我试了一下,写的不通,可以给个实例或者代码吗?谢谢
xinbada1985 2018-01-10
  • 打赏
  • 举报
回复
另外最好别用灰度图这样8位的小图片!因为速度太快!你根本看不出来是否同步
xinbada1985 2018-01-10
  • 打赏
  • 举报
回复
1.其实打断点是判断不出来先后的,目测代码是没有问题的,除非加锁了,你最好是打输出,看一下方法开始的时间和结束时间是否有重合,如果有就说明是同时在传输 2.因为指纹文件太小,所以传输是一瞬间可能就完成了!及时是同时上传,也可能因为网速等原因造成一个先传输完成一个后传输完成
xinbada1985 2018-01-10
  • 打赏
  • 举报
回复
多跑几遍,确保一下是一个先执行一个是后执行的
绿领巾童鞋 2018-01-10
  • 打赏
  • 举报
回复
DataReceived 本来就是一个委托,你接受收到串口的响应然后在DataReceived 里面执行的全部都是在 额外的线程里面跑的 而不是 UI线程 , “为什么必须要等第一个完成,才会触发第二个串口的接受事件??” 完完全全是你自己理解的。 “可以实现同步传送吗?,不要一先一后,这样很浪费时间” 首先 你的下位机能做到精准的同时对着两个串口发数据吗?我理解的单片机程序也是单线程一个周期做一样东西,串口数据发送也毫无意外的也是有先后顺序的,既然你的硬件已经是这样的操作,你要求功能更强的PC怎样怎样你觉得合理?而且在上位机做数据同步太简单了。
  • 打赏
  • 举报
回复
DataReceived 事件是在 I/O 子线程触发的,不是什么 UI 主线程 触发的。你设计“调试断点、日志”要仔细从这个方面考虑,从这里开始显示。
Mr Dang 2018-01-10
  • 打赏
  • 举报
回复
因为这2个串口的接收都是在主线程执行的,传输的字节也多,当一个设备传输bmp数据时 另一个接收事件就被阻塞了。 用多线程解决 ~~~
qq_22905051 2018-01-09
  • 打赏
  • 举报
回复
引用 10 楼 sp1234 的回复:
[quote=引用 7 楼 qq_22905051 的回复:]
[quote=引用 3 楼 wanghui0380 的回复:]
关键是你从何得知他们不是同时的,下断点?写日志?


不能做到完全的同时,模组检测到手指放上就会将采集的数据往上传,就算有先后时差,怎么会必须第一个传完后才开始传第二个的?[/quote]

人家的意思是,你的代码自己阻塞了自己,所以你自己始终是反反复复只说表面现象,而从来不深入到调试画面来说明。[/quote]

贴两站图
第二幅图的16代表先触发的串口,18代表后触发的串口,16的触发后,数据全部接收完成后,才第一次触发第二个串口(18)的接受事件。第一幅图是定义的接受事件,
qq_22905051 2018-01-09
  • 打赏
  • 举报
回复
引用 11 楼 sp1234 的回复:
人家问你有没有设置断点或者日志来查看 DataReceived 第一条语句触发的时机。而你仍然是反复强调标题上的话,并不深入。
打断点看的,必须要等到先触发接受事件的串口,接收完200多包数据后,也就是在触发200多次后,才会触发第二个串口的接受事件,接受第二个串口的数据
  • 打赏
  • 举报
回复
引用 7 楼 qq_22905051 的回复:
[quote=引用 3 楼 wanghui0380 的回复:] 关键是你从何得知他们不是同时的,下断点?写日志?
不能做到完全的同时,模组检测到手指放上就会将采集的数据往上传,就算有先后时差,怎么会必须第一个传完后才开始传第二个的?[/quote] 人家的意思是,你的代码自己阻塞了自己,所以你自己始终是反反复复只说表面现象,而从来不深入到调试画面来说明。
  • 打赏
  • 举报
回复
人家问你有没有设置断点或者日志来查看 DataReceived 第一条语句触发的时机。而你仍然是反复强调标题上的话,并不深入。
xuzuning 2018-01-08
  • 打赏
  • 举报
回复
两个串口接收? 那你是如何连线的?应该是各自连线至对应设备上的
正怒月神 2018-01-08
  • 打赏
  • 举报
回复
这个看起来更多的是异步传输和接收。 这和绑定事件的先后应该没关系。
wanghui0380 2018-01-08
  • 打赏
  • 举报
回复
关键是你从何得知他们不是同时的,下断点?写日志?
qq_22905051 2018-01-08
  • 打赏
  • 举报
回复
引用 5 楼 xuzuning 的回复:
两个串口接收? 那你是如何连线的?应该是各自连线至对应设备上的
是的,两个设备连接到两个不同的串口
qq_22905051 2018-01-08
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
这个看起来更多的是异步传输和接收。 这和绑定事件的先后应该没关系。
我的两个模组,在有手指放上时就会往上传数据,为什么总是先放手指的模组串口的接受事件触发后,数据接受完成,第二个串口的接受事件才触发,虽说手指放上有时间差,但是为什么要等第一个传完,才开始第二个,不能在传第一个的时候,第二个串口的事件也触发,开始接受数据吗?
qq_22905051 2018-01-08
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
关键是你从何得知他们不是同时的,下断点?写日志?
不能做到完全的同时,模组检测到手指放上就会将采集的数据往上传,就算有先后时差,怎么会必须第一个传完后才开始传第二个的?
  • 打赏
  • 举报
回复
DataReceived 是在 I/O 子线程上触发的。你要条是你自己的代码,看看为什么会阻塞。
EIT王子 2018-01-07
  • 打赏
  • 举报
回复
应该是你的端口不是同时发送数据的。而且系统的消息响应也是看起来并行,其实也是串行的。没有绝对的同时,都还是时间分片的。
qq_22905051 2018-01-07
  • 打赏
  • 举报
回复
没有回复吗,顶一下
此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api同名的函数,是Win32API的封装。部分函数取自网上开源算法,在相关函数中均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp2的库文件,理论上可以应用于VFP6 7 8 9版本。 此库在第一次打开时自动添加智能感应功能已关闭。请在打开后,使用FllAddFoxCode()向智能感应库添加所有的函数原型(需要VFP7以上),此库存所有函数使用VFP推荐的命名规则,一般可以根据函数名和知能感应的提示参数来推测参数及返回值。 开发环境可以使用FllHelp()函数来检查函数信息: 取得此版本函数个数:FllHelp() 取得第x个函数的信息:?FllHelp(x) 显示提示信息:?FllHelp(x,.T.) 显示指定函数的信息:FllHelp("SendMessage",.T.) 显示Fll的版:?FllGetVersion() 添加智能感应代码:FllAddFoxCode() 版本信息:由于不定期更新,请及时核对版本(右键属性),版本为X.X.X.X,第一位为主版本号,第二位为函数个数,第三位为发布的年份,第四位为日期。当前版本为:1.179.9.811 版权:你可以自由使用、散发此函数库及此帮助,包括应用于你的商业软件中。在转发时应注意帮助文件于函数库和帮助同在。不得对软件进行破解、反编译等破性或逆向工程。MyFll作者不承担可能由于技术原因或失误给你带来的错误或损失。发现错误可以与作者取得联系共同改进。 感谢:我的帮助论坛http://www.myf1.net/bbs 梅子论坛 http://www.meizvfp.com/bbs 感谢:各位为Myfll做测试、编写帮助的热心网友。 作者:木瓜 ljyit@163.com 函数列表: 硬件相关函数: GetDiskSerial        读取指定硬盘的序列号 GetCpuId           读取CPU的序列号 GetMAC            读取网卡的MAC地址 GetVolumeNumber       读取指写磁盘的卷标 IsDiskInDrive        检查指定磁盘是否就绪 GetPort           读取系统的串口、并口 ComOpen           打开串口 ComWrite           向串口输出信息 ComRead            从串口读取信息 ComClose           关闭串口 GetGUID            获取全球唯一ID AEthernet          枚举网卡的所有信息 加密解密函数: MD5File           计算一个文件的MD5效验和 MD5String          计算一个字符串的MD5效验和 CRC32File          计算一个文件的CRC32效验和 CRC32String         计算一个字符串的CRC32效验和 des             采用DES算法加密或解密一个字符串,长度为8位 des16            采用DES算法加密或解密一个字符串,长度为16位 des24            采用DES算法加密或解密一个字符串,长度为24位 EnDeString          双向加密解密字符串的函数 Encrypt           双向加密解密字符串 RSACalc           RSA计算函数 RSAGen            生成随机RSA密钥函数 RSACmp            比较两个十六进制值是否相等 URLEncode          URL编码 URLDecode          URL解码 QPEncode           Quoted-Printable QP编码 QPDecode           Quoted-Printable QP解码 压缩解压函数: Zip              压缩文件 UnZip             解压文件 UnZipFile           解压单个文件           ZipInfo            测试一个文件是否在压缩文件中存在 ZipFileToStr         将压缩文件中的文件解压到变量 ZipAFile           将zip文件中的文件信息生成的数组 CompressString        压缩一个字符串 DeCompressString       解压字符串 数据库: CursorToStr         将Cursor生成变量 ChangesToStr         将Cursor的变动情况生成变量         StrToCursor         将变量还原为Cursor AppendFromStr        将变量中的表追加到指定表中 ACursorList         将变量中的表信息生成数组 ACursorFields        将变量中的指定表的字段信息生成数组 CRC32Record         计算一条记录的CRC32值 SQLCallBack         SQL回调函数载入 SQLCallReset         SQL回调函数卸载 PackMDB           压缩修复Access数据库 ReadMemo           读取vfp中大于16M的备注字段 网络相关函数: DownFile           从internet上下载文件到本地 DownFileX           线程方式从网上下载一个文件 HttpGetFileSize       读取internet上的文件大小 HttpPostData         向http服务器Post数据 HttpOpen           打开一个Internet句柄 HttpAddParms         为Http句柄添加一个参数 HttpSend           发送Http句柄中的Post数据 HttpClose          关闭Http句柄 FtpDownFile          从FTP服务器下载文件 FtpUploadFile        向FTP服务器上传文件 FtpConnect          连接FTP服务器 FtpDisconnect        断开FTP服务器连接 FtpAFile          枚举Ftp中的所有文件 FtpCreateDir        在FTP服务器上创建一个文件夹         FtpSetCurrentDir      设置当前的文件夹 FtpDeleteDir        删除FTP服务器上的文件夹 FtpDelFile         删除FTP服务器上的文件 FtpRename          重命名FTP服务器上的文件 FtpFOpen          打开FTP服务器上的文件 FtpFClose         关闭FTP服务器上的文件 FtpFRead          读取FTP服务器上的文件 FtpFWrite          写入FTP服务器上的文件 FtpSetPasv          设置FTP被动工作模式 ShareAdd           在局域网共享文件夹 ShareDel           删除共享文件夹的共享 ShareMapDrive         映射网络驱动器 ShareDelDrive         删除映射的网络驱动器 GetLocalIP          读取本机IP DomainToIP          转换域名为IP地址 DialUp            建立拨号连接 DialDown           断开拨号连接 GetSqlServer         列出所有网络上的SQL Server IpToMAC           根据IP得到MAC地址 邮件函数: SmtpCreate          创建一个SMTP发送邮件的句柄 SmtpNewMail         在内存中创建邮件内容,等待发送 SmtpSend           发送邮件 SmtpGetLastError       检测邮件最后的错误 Pop3Create          创建一个POP3接收邮件的句柄 Pop3Close          关闭句柄 Pop3AMailList        枚举POP3服务器上的邮件数量 Pop3DeleteMail        删除POP3邮件服务器上的邮件 Pop3GetMail         下载一封邮件 Pop3GetMailHeader      下载邮件头 Pop3DeleteMail        删除服务器上的邮件 打印相关函数: PaperAdd           添加自定义纸张并返回ID PaperDel           删除自定义纸张 PaperInfo          读取所有纸张信息或指定纸张信息 APaper            枚举所有纸张生成数组 GetDefaultPrinter      取得默认打印机的名称 SetDefaultPrinter      设置默认打印机 PrinterOpen         启用一个打印任务 PrinterOutPage        打印页对像 PrinterClose         结束打印 常用转换函数: ToPY             生成指写字符串的拼音首字 NToC             数字转人民币大写 hzbh             计算指定字符串的汉字笔划 StringToDword        将高底位存放的字符串,转换为字符型 DwordToString        将整型数值转换为字符型数值 NumConver          进制转换函数,能够将一个数字转换为2至36进制的字符串 ConverNum           将指定进制的字符串转换为数值型 GB2312ToBIG5         简体转繁体 BIG5ToGB2312         繁体转简体 FormToBmp          将表单保存为BMP图片 RectToBmp           指定屏幕区域保存为bmp图片 StrReverse          指定屏幕区域保存为bmp图片 ImageConver         转换图片格式 FTrim            删除字符串中除指定字符以外的字符 Thumbnail          缩放图片 注册表读写函数: regRead           读取注册表中的设置 regWrite           向注册表中写入设置 regDelKey          删除注册表中的分支 regDelValue         删除注册表中的设置 ini文件读写函数: iniRead           从ini文件中读取设置 iniWrite           向ini文件中写入一个设置 iniSet            设置默认的数据段和ini文件 iniSetSection        设置默认的数据段 iniSetFileName        设置默认的ini文件 系统托盘 SysTrayAdd          向系统托盘添加一个图标 SysTrayEdit         修改系统托盘的图标 SysTrayDel          删除系统托盘中的图标 HotKeyAdd          向系统注册一个热键 HotKeyDel          删除向系统注册的热键 SysTrayShowMessage      显示托盘消息 文件操作 CopyFiles          复制文件 MoveFiles          移动文件 DeleteFiles         删除文件 CreateShortcut        创建快捷方式 GetIcon           释放exe或dll中的图标 其它: SetVFPEvents         设置MYFLL内部函数回调功能 SetDateTime         设置Windows系统时间 ChangEres          更改屏幕的分辨率 idleLoad           开始加载空闲检测 idleSeconds         读取系统空闲时间 idleUnload          卸载空闲检测 KillApp           终止指定进程 KillAllApp          终止所有进程,但排除指定标题的进程 KillProcessByName      根据程序文件名杀死一个进程 FindAllFile         查找指定文件夹下的所有文件 IsNum            检测函数是否是数字 CheckProcess         检测主程序是否重复运行 ProcLoad            载入一个VFP函数,取得函数地址 ProcUnload          卸载函数 MemRead           读取指定地址的内存 MemWrite           写入指写内存 PushError          系统错误处理压栈 PopError           系统错误处理出栈 Format            格式化输出字符串(类C语言) CreateLink          创建文件关联 DesktopHide         隐藏桌面 SystemKeySet         禁用系统键 RegisterFile         注册文件名解除文件注册 封装过的Win32 API函数: FindWindow          查找指定窗口的句柄 SendMessage         向指写窗口发送指定消息 PostMessage         将消息投递到指定句柄的消息队列 ShowWindow          显示指定窗口 ShowWindowAsync       显示指定窗口 SetWindowLong        设置窗口的扩展样式 SetLayeredWindowAttributes  设置窗口效果 SetForegroundWindow     激活指定窗口使这成为最前面的窗口 ShellExecute         调用系统关联,打开一个文件 ShellExecWait        调用一个程序,并等待执行结束 SuspendThread        暂停一个线程 ResumeThread         恢复一个线程 Beep             使电脑内喇叭发出beep声 ExitWindowsEx        退出Windows Sleep            程序挂起nMilliseconds毫秒 ExitProcess         终止当前进程 GetLastError         返回最后的错误号码 SetParent          设置窗口的父窗口 UpdateWindow         更新窗口
GS7020B GPRS LED 显示屏控制卡用户手册 一、 技术指标和特点 1. 同时支持GPRS 和串口通信。 2. GPRS 通信 (1) 频段:EGSM900/DCS1800 双频。 (2) 灵敏度: -106dBm (3) 最大发射功率: EGSM900 Class4(2W) DCS1800 Class1(1W) 3. 串口通信速率: 115200bps。 4. 单色控制范围: 32768 点(127 条节目)32*1024、64*512、128*256… 40960 点(31 条节目)48*832、64*640… 5. 支持扫描方式: 1/16、1/8、1/4、静态等。 6. 支持最多8 个分区。 7. 支持每日8 个时段的8 级亮度调节(含自动开关显示屏)。 8. 支持多种节目显示方式,可单独控制进入和退出方式。 9. 可定义节目的每日播放时段(最多4 个)。 10. 可定义节目播放的起始和终止日期。 11. 树形显示屏管理。支持快速节目群发。 12. 节目预览功能。 13. 发送失败后的自动重发功能。 14. 发送日志记录与查询。 15. 数字时钟(支持农历)、倒计时功能。 16. 支持动态域名解析。 17. 控制卡自带4 个12 接口和2 个08 接口。 18. 支持开关量输入报警功能(选项) 19. 多个显示屏节目同步播放(选项) 20. 操作方便的操作软件。 21. 供电电压: 5V 22. 工作温度: -40℃~+80℃ 二、 GS7020B 硬件 1. 控制卡布局: (1) RS232 及报警输入接口(9 芯针座) (2) 天线接口(阴头) (3) SIM 卡座 (4) 电源端子 (5) 显示屏扫描接口,6 个接口上排从左至右为 P2_12, P1_12, P1_08; 下排从左至右为 P4_12, P3_12, P3_08。 (6) OE 极性选择跳线 OE_SEL。应与显示单元板和控制卡软件软件配置一 致。 (7) 状态指示灯 (8) 时钟电池(3V 锂纽扣电池CR1220) 2. RS232 及报警输入接口信号定义: 1 – 报警开关量输入 2 – RXD 3 – TXD 4 – 空 5 – GND 6 – 空 7 – 空 8 – 空 9 – 空 3. OE 极性选择:  如果显示单元板OE 为低电平有效,除在软件配置中选择OE 反向外, 1 2 7 8 3 4 5 6 OE_SEL 应用跳线块短接右侧(-)的两个插针。如此可保证控制卡加 电期间显示屏为关闭状态而不会有亮线出现,从而减少对电源的冲击 并对控制卡的正常启动提供保障。  如果显示单元板OE 为高电平有效,除在软件配置中不选择OE 反向外, OE_SEL 应用跳线块短接左侧(+)的两个插针。如此可保证控制卡加 电期间显示屏为关闭状态而不会有亮线出现,从而减少对电源的冲击 并对控制卡的正常启动提供保障。 三、 使用前的准备工作 1. 电源 GS7020B 采用5V 电源供电,可与显示屏共用一个电源。由于 GPRS 通信 对电源要求较高,峰值最大可能需要电源能瞬间提供2A 电流并且电压跌 落不大于0.5V,因此应选用动态响应较好的电源。必要时可使用5V2A 的电源单独为GS7020B 供电。 如果GS7020B 与显示屏共用一个电源,应使用不超过1 米的电源线直接 从电源上引出,请勿使用经过若干显示单元板串接的电源。 注意:如果已经将显示单元板通过排线连接到了GS7020B,则一定要保 证显示屏单元板与GS7020B 同时供电或显示屏单元板先于GS7020B 供 电。否则可能造成GS7020B 接口驱动的损坏! 2. 手机卡和GPRS 资费 GS7020B 的GPRS 通信要求手机卡开通GPRS 数据业务。一般情况下需要 开通cmnet 来保证发送计算机通过Internet 与GS7020B 通信。客户可根 据自身情况选择中国移动或中国联通的GPRS 业务。 GS7020B 每个月最少需要10MB 流量,根据发送节目的平凡程度和节目 内容大小,客户可选择20~50MB 的包月流量。具体资费请咨询当地移动 运营商。 3. 串口通信 GS7020B 的RS232 串口可用来配置GPRS 通信参数或作为GPRS 通信的备 用通信方式。在正式使用GS7020B 前,用户可使用串口通信对 GS7020B 的显示和通信参数进行配置并可测试显示效果。 GS7020B 与计算机之间的串口线采用2-3 交叉的串口线通信。客户可以 自行制作或使用从市场上购买的标准交叉串口线。 4. 天线 GS7020B 标准配置为带3 米引线的磁性或无磁吸盘天线。使用时应将天 线置于手机信号较好的位置。除非显示屏位于信号较强的位置,一般应 将天线引出显示屏的金属外壳。 在露天环境中,要注意引出位置的防水 处理。 5. GPRS 通信服务器 GS7020B的GPRS 通信服务器可根据通信数据量的大小及服务器位置使用 一台单独的计算机或与发送软件共用一台计算机。 (1) 通信服务器的联网要求  通信服务器或其路由设备(路由器、交换机等)必须拥有 Internet 上的IP 地址(固定IP 或动态IP)。如果存在路由设备, 该路由设备客户应有修改其配置的权利和能力。  根据系统中显示屏的数量,具有相应的通信带宽 (2) 通信服务器常见构成方案: A. ADSL(中国联通、中国电信)路由器上网,路由器可获得动 态Internet IP 地址。 B. ADSL(中国联通、中国电信)路由器上网,并且路由器绑定 静态Internet IP 地址。 C. 计算机直接通过ADSL 拨号上网,可获得动态Internet IP 地 址。 D. 计算机直接通过ADSL 拨号上网,并且绑定静态Internet IP 地址。 E. 由Internet 网络接入商提供光纤、DDN 专线、等接入方式, 并提供Internet 固定IP 地址。 F. 由网络服务商托管服务器,服务器拥有Internet 固定IP 地址。 客户计算机可通过互联网访问该服务器。 (3) 服务器域名解析:  无论服务器是否拥有固定的Internet IP 地址,客户都可采用相 应的域名绑定业务使GS7020B 可通过该域名注册到服务器上。 但为了减少域名解析带来的额外通信流量,建议拥有固定 Internet IP 地址的客户直接使用该IP 地址通信。  如果客户采用的动态Internet IP 地址方案,则需要在服务器上 安装和运行动态域名解析(DDNS)客户端软件。常见的动态 域名解析软件有“花生壳”等。客户可到其网站下载、注册、 运行该软件。  采用动态Internet IP 地址方案和动态域名解析时,如果服务器 刚开机或断线重新上网,则最长可能要等待5 分钟,GS7020B 才能注册到服务器上。 (4) 路由器配置: 很多客户的局域网上的计算机是通过一个共用的ADSL 路由器联 接到Internet 上的。此时需要对路由器进行配置。下面以一种路 由器为例说明路由器的配置方法:  路由器型号:D_Link DI-704UP  路由器在局域网上的IP 地址: 本例中为192.168.0.1  客户计算机(用作GPRS 通信服务器)IP 地址: 本例中为 192.168.0.17。 注意:客户计算机IP 地址应采用静态IP, 勿使用DHCP 动态获 得。否则路由器配置在客户计算机或路由器重启后将不能正 确地指向客户计算机。  配置步骤: a. 打开浏览器,输入路由器起始页面地址: b. 如果路由器配置页面需要密码进入请输入用户名密码(本 例中的路由器出厂默认用户名和密码为admin、admin。 c. 进入路由器配置页面后选择相应选项,找到虚拟服务器 (Virtual Server)项。如下: 其中: Name(名称)为自己起的一个名字 Private IP(本地IP 地址)填客户计算机的IP 地址 Protocol Type(协议类型)选UDP 或所有(Both) Private Port(本地端口号):3700 Public Port(外网端口号) :3700 填好相应内容后,按下应用/保存(Apply/Save)按钮,即可 生效。 四、 单用户版服务器软件IpTransfer 使用说明 1. 安装与运行 本软件无需安装。直接拷贝并运行IpTransfer.exe 即可 2. 软件界面 界面中的上半部分指示客户端软件(GS702BMan)的连接和通信状态。 RX、TX 分别表示IpTransfer 从GS7020BMan 接收和向GS7020BMan 发送数据字节数。在线DTU 数量统计当前可通信的控制卡数量。 界面中的下半部分指示GS7020B 控制卡的连接和通信状态。RX、TX 分 别表示IpTransfer 从该控制卡接收和向该控制卡发送数据字节数。最后 登陆时间指明服务器最近一次收到GS7020B 控制卡发送的登陆报文或命 令响应的时间。正常情况下,该时间距离当前时间不超过30 秒钟。 3. 用户名和密码 为防止对显示屏的不安全访问。客户端软件GS7020BMan 通过IpTransfer 向GS7020B 控制卡发送数据或命令均须通过口令检查。第一次运行 IpTransfer 后,应选择“用户/编辑”菜单设置用户名和密码: 用户名最长11 个字符;密码最长15 个字符。 4. 控制卡在线状态 对已经在线的控制卡,如果超过2 分钟未接收到新的登陆报文或数据, 则IpTansfer 从列表中删除该控制卡。 五、 客户端软件GS7020BMan 使用说明 1. 安装与运行 本软件无需安装。可将GS7020BMan_V2.x.exe 拷贝到一个文件夹里并运 行即可。 运行GS7020BMan_V2.x.exe 后,在其所在的文件夹中,可能会自动生成 一些新的文件和文件夹: 其中:config.ini 保存控制卡配置和节目信息;config 文件夹保存控制卡列 表信息;log 文件夹保存节目发送日志;txstatus.txt 保存各控制卡最后的 节目发送状态(是否成功)。 2. 软件升级和备份 如有新的GS7020BMan 软件版本,仅需将新软件拷贝到原来的安装目录 即可。 如果要更换计算机或进行备份。需要拷贝GS7020BMan 所在文件夹内的 所有内容,至少要备份config.ini 文件和config 文件夹。 3. 软件界面 菜单栏 工具条 显示屏列表 节目列表 节目内容 编辑区 节目属性 定义区 4. 通信配置 通信配置用于选择与控制卡的通信方式及定义有关参数。 选择菜单“系统/通信配置”项即可进入通信配置对话框。  串口通信方式主要用于修改控制卡内的GPRS 通信参数和本地测试, 也可用于安装运行后的GPRS 通信的备用通信方式及。  GPRS 通信服务器的IP 地址或域名是指运行IpTransfer 软件的计算机 的IP 地址或其域名。常见配置有以下几种情况: (1) GS7020BMan 和IpTransfer 运行在同一台计算机上,此时GPRS 通信服务器的IP 地址或域名应填写为”127.0.0.1”(IP 地址127.0.0.1 在计算机中表示本机)。 (2) GS7020BMan 和IpTransfer 运行在不同的计算机上,但两台计 算机处于同一个局域网中,此时GPRS 通信服务器的IP 地址或域 名应填写运行IpTransfer 的计算机的局域网IP 地址。 例: IpTransfer 运行在IP 地址为”192.168.0.17”的计算机上, GS7020BMan 运行在IP 地址为”192.168.0.220”的计算机上, 则此 处应填写”192.168.0.17”。 (3) GS7020BMan 和IpTransfer 运行在不同的计算机上,并且两台 计算机位于不同的局域网中。此时应填写运行IpTransfer 的计算 机所在网络的Internet IP 地址或域名。 例1:IpTransfer 运行的计算机上安装有动态域名解析软件,其域 名为”yuepoch.5166.info”, 则在GS7020BMan 中的GPRS 通信服务 器的IP 地址或域名应填写”yuepoch.5166.info” 例2:IpTransfer 运行在域名为”dtu.yuepoch.com”的计算机上, 且 该计算机拥有Internet 固定IP 地址”219.234.88.231”,则在 GS7020BMan 中的GPRS 通信服务器的IP 地址或域名应填写” dtu.yuepoch.com”或”219.234.88.231”。  用户名和密码此处要填写已在IpTransfer 中设定的用户名和密码。  GPRS 通信的超时时间和重试次数一般用4 秒和5 次。根据客户自身 的网络情况可适当改变,但由于GPRS 通信的特点,超时时间一般应 在3~15 秒之间。  自动重发间隔是指如果发送节目失败,则在失败后的指定时间后开始 尝试重新发送,如失败则再次等待指定时间发送,直至发送成功。如 此处为0,表示发送失败后不自动重发。不管此处是否指定了自动重 发时间间隔,用户随时都可手动开始重发未成功发送的节目内容。 5. 控制卡配置 在将控制卡连接到显示屏之前,应检查和修改控制卡中的有关配置。该 项也用于检查和修改控制卡内的GPRS 通信参数。在运行中也可远程修改 某些参数。 选择菜单“系统/控制卡配置”项或 按钮即可进入控制卡配置对话框。  设备编码:标识控制卡的最长11 个字符的字串。设备编码用于GPRS 通信。在一个系统中,不能有重复的编号。GS7020B 在出厂时已经预 写入唯一的设备编号,并已在控制卡标签上注明。在串口通信方式下, 该项可被修改,因此建议在修改配置前先读取控制卡配置,以防写入 错误的编号。GPRS 通信方式下,该项不可编辑修改。  GPRS APN: APN 是GPRS 接入点名称。除非在中国大陆以外运行 GS7020B, 或已从移动服务商获得专用的APN, 该项都应为”cmnet”。  服务器 IP 地址或域名: 是指运行IpTransfer 软件的计算机的Internet IP 地址或其域名。GS7020B 将在连接到GPRS 网络后向该项指定的计 算机定时发送登陆报文。  DNS 服务器1 和DNS 服务器2:域名解析服务器。目前GS7020B 依靠 自动获得的域名服务器解析GPRS 通信服务器域名,这两项暂时无用。  自动亮度调节:可设定每天8 个时段的8 级亮度(关屏-最亮)。  显示屏宽度、高度:按显示屏实际尺寸配置。  扫描方式: (1) 1/16(A) 32 点高1/16 扫描单元板 (2) 1/8(A) 16 点高1/8 扫描单元板 (3) 1/4(A) 16 点高1/4 扫描12 接口单元板(P10、P12.5…) (4) 1/4(B) 8 点高1/4 扫描12 接口单元板(P10…) (5) 1/16(B) 16 点高1/16 扫描08 接口单元板 (6) 1/16(C) 32 点高1/16 扫描08 接口单元板仅显示中间16 点 (7) 1/1(A) 静态显示单元板 (8) 1/1(B) 静态显示单元板  OE 反相: 显示单元板OE 低电平有效时选择该项。注意控制卡上的 OE_SEL 跳线应和此处设置一致,否则有可能造成开机失败。  数据反相:显示屏单元板数据低电平有效时选择该项。  扫描逆序:显示屏单元板上的ABCD 地址线反过来使用时选择该项。  字节逆序:暂不支持  折行输出:用于输出接口不够用时用Z 字形方式驱动显示屏。具体接 线与显示屏有关,具体使用请联系我公司技术支持。  双色:2.4 版本以下暂不支持。如驱动双色显示屏,请联系我公司技 术支持。  允许开关量报警:如选择该项,则在将控制卡上的9 针插座的1 脚和 5 脚短路200 毫秒后,将在显示屏上闪烁显示最后一个编号(127 或31) 的节目内容。一旦显示了报警内容,只有停止控制卡电源才能使其恢 复显示正常的节目内容。如未选择该项,最后一个编号(127 或31)的 节目将作为正常节目参与循环播放。  分区管理:GS7020B 支持最多8 各分区同时显示独立的节目内容。分 区位置坐标以显示屏左上角水平位置x = 0, 垂直位置y=0。每条节目 编辑时可指定其所属分区编号。为了方便操作,一般将需要经常编辑 节目内容的编号设为1。不经常改动的分区节目,例如时钟或倒计时 节目可使用编号较大的节目序号。 修改分区时可从分区管理下部的窗口中观察分区在显示屏上的位置 以检查分区设置是否正确。 6. 控制卡(显示屏)管理 GS7020BMan 采用树形分级显示屏管理。 选择菜单“系统/显示屏管理”项或 按钮即可进入显示屏管理对话框。 工具栏按钮自左至右分别为:添加显示屏组、添加显示屏、删除、重新 打开(恢复)之前保存的显示屏列表、保存。  修改显示屏组或显示屏名称:选中要编辑的项,在其名称上单击鼠标 左键,等待改名称变为可编辑状态后再进行修改。  修改显示屏设备编号:选中要编辑的项,在原编号上单击鼠标左键, 等待其变为可编辑状态后再进行修改。  退出显示屏管理窗口前请保存已经进行的修改。如果为保存改动,退 出窗口时将出现如下提示: 此时可选择保存后退出(是)、不保存退出(否)或回到显示屏管理 窗口(取消)。 7. 节目内容的编辑  节目内容直接在节目内容编辑区内输入完成。  编辑区内的每个网格表示一个显示屏的大小,目的是为了可以直观 地了解显示内容的显示位置。  单击节目列表项或改变下拉列表 可选择 当前编辑的节目。  通过 可以选择该节目所属分区。  节目内容说明修改后将在节目列表中显示,以方便进行节目管理。  节目现有内容实际播放所需要的时间可在节目编辑区上面显示出 来: ,单击刷新播放时间按 钮或者打开新节目时将重新计算播放时间。 (1) 节目文字内容的编辑  字体:按下 按钮即可弹出字体选择对话框。  水平对齐:编辑区外左上的三个按钮 分别为左对 齐、水平居中、有对齐。当文字内容少于一个屏宽时可用于 调整文字内容的水平位置。  垂直居中:当文字内容少于一个屏高时,按钮 可以调整 文字内容的垂直位置。  键盘命令 箭头键( ):移动编辑光标 回退键(Backspace):删除光标前的文字 删除键(Delete): 删除当前光标处的文字 Shift+箭头键( ):选择文字 Ctrl+C: 复制 Ctrl+V:粘贴 Ctrl+X: 剪切 Ctrl+A:选择所有文字  可以使用鼠标改变光标位置(单击左键)和选择文字(按下 左键拖动)。  在编辑区内单击鼠标右键,可弹出编辑命令菜单。 (2) 节目图片内容的编辑  按下 按钮即可弹出图片文件选择对话框。  GS7020BMan 仅支持bmp 格式的文件,并将彩色文件转换为 单色格式显示。  通过调整 ,可以改变图片的位置。  图片的大小可以超过显示屏的显示范围。  每个节目只能加载一个图片。 (3) 节目内容的删除。 除了可以使用键盘命令和右键菜单删除节目文字内容外,还可以 通过编辑菜单中相应命令删除全部文字、图片内容。  注意使用这些菜单命令前,要确认节目列表中的选择框是否 正确。 8. 节目显示属性控制  节目进入方式  直接显示:立即显示一个屏幕的内容。如果节目内容超过一 个屏幕,则按先从左到右再从上到下的次序分多次载入显示 内容。该显示方式下,应注意文字不要跨在屏幕分割线上。  连续左移:第1 个屏高的节目内容全部向左连续移入  连续右移:第1 个屏高的节目内容全部向右连续移入  连续上移:第1 个屏宽的节目内容全部向上连续移入  连续下移:第1 个屏宽的节目内容全部向下连续移入  向左移入:第1 个屏高的节目内容向左移入屏幕,如果节目 宽度超过一个屏幕,则按从左到右的次序分多次移入。  向右移入:第1 个屏高的节目内容向左移入屏幕,如果节目 宽度超过一个屏幕,则按从右到左的次序分多次移入。  向上移入:第1 个屏宽的节目内容向上移入屏幕,如果节目 高度超过一个屏幕,则按从上到下的次序分多次移入。  向下移入:第1 个屏宽的节目内容向下移入屏幕,如果节目 高度超过一个屏幕,则按从下到上的次序分多次移入。  向右展开:  向左展开:  向下展开:  向上展开:  从左右向中间展开:  从中间向左右展开:  从上下向中间展开:  从中间向上下展开:  水平百叶窗:  垂直百叶窗: 显示一个屏幕的内容。如果节目内容超过一个屏幕,则按先 从左到右再从上到下的次序分多次载入显示内容。在这些显 示方式下,应注意文字不要跨在屏幕分割线上。 百叶窗的页片宽度可定义,一般取8~64  节目退出方式:  直接清除:  向左移出:  向右移出:  向上移出:  向下移出:  向右擦除:  向左擦除:  向下擦除:  向上擦除:  从左右向中间擦除:  从中间向左右擦除:  从上下向中间擦除:  从中间向上下擦除:  水平百叶窗:  垂直百叶窗:  无:不退出。根据本节目的下一部分内容或下一条节目内容 的进入方式决定显示方式。  进入速度和退出速度: 单位为毫秒。指每做一次动作,例如左移一个像素宽度所需要的 时间。直接显示和直接清除方式对应的进入速度和退出速度无 效。该数值越大,动作速度越慢。 一般取值再16~50 之间。 对1/16 扫描的16 点高显示屏,取值16 可获得平滑清晰的左移和 右移效果。  停留时间: 单位为毫秒。指一次进入方式动作完成后,显示内容在屏幕上静 止停留的时间。  起始时间和终止时间: 节目在该项指定的时间范围内才会被播放。  每日播放时段 节目在该项指定的时段范围内才会被播放。 上图中第一个时段为0 时0 分至23 时59 分(含59 分),即全天 播放。后三个时段起始时间和终止时间相同,表示无效。 如果已经播放了部分内容,即使此时终止时间到,该节目也会被 继续播放完成。 9. 节目显示效果预览  可以通过菜单“编辑/预览当前编辑的节目”项在电脑显示屏上预览 当前编辑的节目的显示效果。要停止预览,选择菜单“编辑/停止预 览当前编辑的节目”。  可以通过菜单“编辑/预览所有节目”项或 按钮在电脑显示屏上 预览总的显示效果。要停止预览,选择菜单“编辑/停止预览所有节 目”。 10. 数字时钟和倒计时 数字时钟和倒计时项统称为动态变化项。含有动态变化项的节目的进入 方式只能选择“直接显示”, 退出方式可以选“直接清除”或“无”,停留 时间选1000 毫秒以上。 例如要显示格式为 “2010 年11 月17 日 23:31:31 星期三”的数字时钟。  步骤1:先输入以上文字(具体的年、月、日、时、分、秒、星期等 数值随意)。  步骤2:选中2010 四个数字,再选择菜单“编辑/将所选文字设为动 态变化项”。等弹出如下对话框后,选择动态类型为“4 位数字年”, 点确定即可。 此时2010 四个数字将变成暗红色显示 :  步骤3:选中11 两个数字,再选择菜单“编辑/将所选文字设为动态 变化项”。 在设定动态文字对话框中选择动态类型为“2 位数字月”, 确定。  步骤4:依次选择动态类型,最后输入文字效果如下:  步骤5:设定显示方式等: 11. 节目的导出和导入 某些节目具有一定的代表性,此时可以选择菜单“编辑/导出当前节目” 将该节目导出至某一个节目文件。在编辑其它类似节目时可以选择菜单 “编辑/从节目文件导入到当前节目”来导入保存好的节目内容,然后在 此基础上修改即可。 12. 发送节目内容  发送节目内容的步骤: (1) 选择要进行操作的显示屏 (2) 选择要发送的节目 (3) 选择菜单“通信/发送节目内容”或 按钮即可开始发送 (4) 发送状态和是否成功可在相应的显示屏控制卡的通信状态/ 结果栏中观察到。  发送节目中如果出现单次命令响应失败,将按照通信配置中设置的次 数尝试重新发送该命令。  如果向某个显示屏发送节目失败,可以选择菜单“通信/查看所选显 示屏未成功发送的节目”以在所选显示屏通信状态/结果栏中显示未 成功发送的节目列表。  选择菜单“通信/重新发送上次未成功发送的节目内容”,可以手动发 起重新补发未成功发送的节目。  如果在通信配置中选择了自动重发,则在发送失败后的指定时间后将 弹出如下提示,并在未被手动推迟的情况下自动发起重新发送。 13. 查询控制卡在线状态 选择菜单“通信/查询控制卡在线状态”或 按钮即可查询所选择 控制卡的在线状态。如果该控制卡在线,则对应通信状态/结果栏中 将显示“在线”,否则显示“-”。 14. 查询控制卡时钟 选择菜单“通信/查询控制卡时钟”或 按钮即可查询所选择控制 卡的当前时钟。通信结果显示在其对应的通信状态/结果栏中。 15. 校对控制卡时钟 选择菜单“通信/校对控制卡时钟”或 按钮即可用发送计算机的 时钟校对所选择的控制卡。通信结果显示在其对应的通信状态/结果 栏中。 16. 开关量输入报警  如果要使用报警功能,在控制卡配置中应选择“允许开关量报警”并 写入控制卡。  报警输入为9 针D 型插座的1 脚和5 脚。如果这两个引脚连续短路 0.2 秒以上,则可引发报警显示。  报警显示的内容在控制卡允许的最后一条节目(第127 条或第31 条) 中定义。  报警显示内容节目的进入方式应选择“直接显示”,退出方式可选择 “无”,停留时间一般选300 毫秒。实际显示时,将以快闪方式显示。  报警显示一旦启动,则只有断开控制卡电源才能取消。  如果在控制卡配置中为选择“允许开关量报警”,则控制卡允许的最 后一条节目(第127 条或第31 条)将作为普通节目参与循环播放。 17. 查看发送日志 选择菜单“日志/查看节目发送记录”可打开如下记录窗口:

110,529

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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