研华adam4017的开发的编程流程=? 点击:1759 | 回复:7



老朱

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 23回
  • 年度积分:0
  • 历史总积分:94
  • 注册:2003年8月14日
发表于:2004-01-10 00:17:00
楼主
请各位前辈点化: 4017(8个)-4520-PC 需要使用PC读取来自各4017的数据,是否应该这样考虑: 1、检查各4017的状态,符合要求则继续进行3否则2 2、设置状态(波特率、地址、校验和等)使之合乎要求,若成功则继续,否则报错,退出 3、创建线程,读取各地址的4017的读数,写到线程间共享的数组里,使用单一线程读取多个地址,轮读 4、另外的线程将那共享的数组里的数据取出处理,永久化 请前辈指教 特别是,在3中,举例如何用C函数实现读取?若创建了一个COM口的“文件”,并调用read功能,是否相应的缓冲区就会有值发生随4017采样值的变化而变化?我是新手,条件也不多,请不厌其烦多指教。当我是小学生吧。在下叩头了。



GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-12-16 10:21:00
1楼
1.模块的设置, 通常只设置一次 (使用 Utility, 而不是自行写程序), 以后都不再变更 (除非模块故障需要换上另一块, 或需要作其它测试). 2.您需要先发出 command, 相对应的模块才会回传 data. 3.若无特殊需求, 则不需用到线程. 4.4017 的 command 应该跟 I-7017/7018 一样. 先发出 #AA 的 command, 然后等待回应; 其中 AA 是其 address (hex). 简单的例子如下... Open COM1 while (true) { for (int iAddress=1; iAddress<9; iAddress++) { Write command #iAddress to COM1 a little sleep or busy loop to read data Read data from COM1 Save data to buffer } Process data in the buffer break the while loop or continue the loop }

GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-12-16 10:25:00
2楼
Oh...the command should have a 0x0D to be the ending char. For example: #01 ==> you should send 0x23, 0x30, 0x31, 0x0d

老朱

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 23回
  • 年度积分:0
  • 历史总积分:94
  • 注册:2003年8月14日
发表于:2003-12-16 21:03:00
3楼
多谢garylin,胜读十年书。 由于读入的数据很多,且多个4017测量数据要“同时”记录,故应该用到多线程。 线程的逻辑应该是: 各4017公用一个线程读,该线程(读数线程)完成读入所有8个4017数据且存入缓存,另外的一个线程伺机读取缓存数据并计算、存入数据库,完成一个数据的计算即置位那个缓存数据,使得度数线程可以用新读的数据覆盖该数据。 该缓存需适当,计算和写库线程的速度也要保证不丢失数据。 以上考虑是否适当? thanks again

GaryLin

  • 精华:0帖
  • 求助:0帖
  • 帖子:4帖 | 1186回
  • 年度积分:0
  • 历史总积分:1263
  • 注册:2003年4月15日
发表于:2003-12-17 09:45:00
4楼
因为是用同一个串口去取各模块上的数据, 需轮询, 各模块的 data 有时间差, 不可能同时. 依您所述, 两线程之间是采用某机置去作到 Synchronization, 效果应该等同于不使用线程. 若您想发挥线程的 Asynchronous 特性, 您可能需将 Buffer 开大一些, 并采用 Queue 的方式去处理. Thread1 不停的取 data 存入 buffer, Thread2 不停的处理 buffer 内的 data.

老朱

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 23回
  • 年度积分:0
  • 历史总积分:94
  • 注册:2003年8月14日
发表于:2003-12-18 00:40:00
5楼
多谢garylin指点。 正在试验。。。过些日子汇报。

yhsu

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 98回
  • 年度积分:0
  • 历史总积分:126
  • 注册:2002年7月04日
发表于:2003-12-18 09:58:00
6楼
有关 示例程序 可以到 www.icpdas.com www.icpdas.com.cn 下载。 4017的协议 和 泓格的7017兼容。泓格还提供高保护模块,不会被静电和干扰打坏的那种!:)

JACKGLEN

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 86回
  • 年度积分:0
  • 历史总积分:83
  • 注册:2001年7月30日
发表于:2004-01-10 00:17:00
7楼
没必要自己开发程序去读写,成本太高

热门招聘
相关主题

官方公众号

智造工程师