`
shaoxiongwang#21cn.com
  • 浏览: 76023 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

关于串口发送命令读取数据的业务逻辑实现

阅读更多
本人在写串口程序时遇到难题,请各位一下:
想要完成的功能阐述如下:
1.写一个类ClassA,通过ClassA.methodA,发送信息给串口,
2.ClassA实现监听接口,实现监听方法methodB,当有信息从串口返回时,将触发监听事件,调用此方法methodB()
3.接收到上一条命令的返回结果后,接着再发送命令给串口.就这样循环N次,有N个命令需要发送给串口,
4.约束条件:发送一条命令后,需要等待返回结果,才能发送下一条命令

本人大致的想法是发送一条命令调用方法methodA()后,在methodA()里调用wait(),同时设置是否已经接收的判断条件变量为receive=false,
当有返回事件,将触发监听事件,调用方法methodB(),在方法methodB()中接收返回结果,同时将receive=true和调用notify(),
如果用单线程,不能实现接收结果后再将流程转向发送再一次信息,如果使用多线程,则无法直接调用methodB(),因为methodB需要传递event参数.
以上可能写得有点罗嗦,简述一下是这样,发送A命令,等待返回结果,返回A结果,发送B命令,,等待返回结果,返回B结果,....
如何实现,我想了几天,想不通,请各位一下,万分感谢!
分享到:
评论
2 楼 shaoxiongwang#21cn.com 2007-06-01  
谢谢thekll的帮助,发现自己把问题写出来,也是理清自己思路的好方法,我的解决方法和thekll所提到的第一点差不多,就是把发送命令也放在监听方法里,当然启动时要在监听方法先发送第一个命令.
再谢谢thekll提到的超时处理,我还没想到.
1 楼 thekll 2007-05-31  
简单一点:
可以使用一个队列和一个线程,线程侦听是否有收到命令结果,如果有,就触发相应的处理事件,然后从队列取一条消息发出去,然后再等待消息响应,如此循环...
要考虑如果等待不到返回结果时应该如何处理,否则程序有可能一直傻等下去,所以最好有超时控制,在超时时间后如果没有结果返回应该尝试重发或者从队列取下一条消息发送。

复杂一点的,1个队列,多个线程,分别处理收发。

相关推荐

    串口监听工具

    5. **命令发送**:用户可以直接通过工具向串口发送命令,测试设备的响应。 描述中提到了"2种串口监听,3种串口调试",这意味着这个工具可能提供了多种工作模式和调试手段,适应不同的场景需求。可能包括: 1. **...

    短信收发的源程序用于串口通讯

    在实际应用中,短信收发源代码可能被用作后台服务,持续监听串口数据,当接收到新的短信时,可以触发相应的业务逻辑,比如报警、控制设备或者转发信息。同时,它还可以根据预设的定时任务自动发送短信,实现自动化...

    MIIO芯片串口命令详情1

    MIIO芯片是一款专为网络通信设计的微控制器单元(MCU),主要负责设备与云端的交互,不涉及复杂的业务逻辑处理。它通过串口提供了一套简洁易读的文本命令,便于外部MCU进行控制和数据交换。串口通信参数默认设置为...

    C# 监听串口

    在`DataReceivedHandler`中,你可以根据接收到的数据执行相应的业务逻辑。 通过上述步骤,你就能够在C#中实现对串口的监听,从而与Arduino进行有效的数据交换。在实际应用中,你可能还需要处理错误、异常,以及根据...

    《物联网框架ServerSuperIO教程》-4.如开发一套设备驱动,同时支持串口和网络通讯1

    同一设备无论是通过串口还是网络接口,其核心业务逻辑是相同的,因此设计一个通用的驱动可以简化开发流程。 4.2 通讯协议规定 通信协议是设备驱动开发的基础,它定义了设备与主机之间数据交换的规则。在本教程中,...

    串口调试助手c#

    7. **WriteLine / Write**:向串口发送数据。 在提供的文件列表中,我们可以看到多个`.Designer.cs`文件,这些通常是Visual Studio自动生成的代码,用于UI设计。例如,`frmCMD.Designer.cs`可能包含了`frmCMD`窗体...

    java代码实现短信猫发送短信

    然后,编写发送AT指令的逻辑,这些指令会通过串口发送到短信猫。例如,创建一个`PrintWriter`实例来写入AT命令,使用`readLine()`方法来读取短信猫的响应。 以下是一个简化的代码示例: ```java import gnu.io....

    c#基于.net core 6,WPF串口操作接收数据

    7. **MVVM模式**: 在WPF应用中,MVVM模式有助于解耦视图和业务逻辑。可以创建一个`ViewModel`类,其中包含串口操作相关的命令和属性,并使用数据绑定将它们连接到视图。例如,可以有一个`ReceiveCommand`用于启动或...

    SPCOMM-EXAMPLE.rar_pcomm_spcomm_串口 控件

    4. **数据交互**:通过控件发送命令给下位机,同时监听下位机的反馈,实现上位机的控制功能。 5. **错误处理和异常捕获**:设置合理的错误处理机制,确保在通信出现问题时,程序能稳定运行。 6. **调试与测试**:...

    Android蓝牙串口通讯下载直接能用

    在Android平台上进行蓝牙串口通信是一项常见的任务,尤其在物联网(IoT)设备与移动应用交互时。...通过合适的库,如"BluetoothHelper",开发者可以简化这个过程,更专注于应用程序的业务逻辑,而不是底层通信细节。

    账单打印机打印程序_c#打印_C#_串口打印机_热敏纸_

    类函数接口允许我们封装打印逻辑,使其独立于具体的业务逻辑,这样可以方便地在不同项目中复用和移植代码。通常,一个打印类会包含初始化打印机、设置打印格式、发送打印数据和清理资源等方法。这些方法应该设计得尽...

    基于C#的短信发送上位机设计

    在本项目中,C#被用来构建用户界面、处理业务逻辑和与硬件交互。 2. **GPRS通信**:GPRS(General Packet Radio Service)是2G网络中的一种数据传输技术,允许移动设备通过无线网络进行数据通信。在本项目中,...

    考勤管理系统源码(VB含串口接口程序)

    3. 数据收发:通过SerialPort的ReadLine或DataReceived事件接收数据,使用WriteLine发送命令或数据。 4. 异常处理:对串口操作可能出现的错误进行捕获和处理,保证系统稳定运行。 四、VB源码分析 在VB源码中,我们...

    文件处理类+数据库类+网口类+串口类

    此外,Entity Framework是一个高级ORM(对象关系映射)框架,可以简化数据库操作,使代码更接近业务逻辑。 三、网口类 网络通信在C#中主要依赖于System.Net命名空间。HttpClient类是进行HTTP请求的首选,它可以...

    自动报警系统源码[串口]

    6. **通信协议**:在串口通信中,需要定义和实现特定的通信协议,确保发送和接收数据的准确性和效率。这可能包括命令格式、错误处理机制等。 7. **多线程编程**:由于数据采集和报警处理可能需要同时进行,多线程...

    短信猫发送源码

    开发者使用ADO.NET或者其他ORM框架(如Entity Framework)来建立C#程序与数据库之间的桥梁,执行SQL语句或者存储过程,实现业务逻辑。 四、AT命令集 AT命令集是串行通信中控制GSM/GPRS MODEM的标准命令,如设置拨号...

    短信猫通过AT指令发送短信息

    开发者需要配置串口参数,如波特率、数据位、停止位、校验位,然后打开串口,向短信猫发送AT指令,并读取其响应。 3. **PBCOM库**:如果PowerBuilder版本较旧,可能需要使用PBCOM库来处理串口通信,这是一个专门...

    经典linux c语言 串口读写 以及UDP读写 例程

    其他文件如`report.c`、`main.c`、`user.c`可能是实现业务逻辑或测试用例的代码,而`.h`文件如`report.h`、`user.h`、`MyUart.h`、`MySocket.h`包含的是头文件,用于声明函数原型、数据结构等,方便在多个源文件间...

    Android 串口通信编程及串口协议分析

    6. 处理数据:一旦验证数据包完整无误,就可以进行进一步的业务逻辑处理。 以上就是关于Android串口通信编程的基本介绍和串口通信协议的解析方法。在实际应用中,还需要考虑异常处理、数据编码解码、多线程同步等...

    与三菱PLC通讯并实现扫码功能(完整项目程序).zip

    5. **数据处理**:对读取的条形码数据进行解析和处理,可能涉及到数据库查询、库存管理或其他业务逻辑。 6. **反馈给PLC**:根据处理结果,更新PLC的输出状态或存储数据。 7. **错误处理和断开连接**:在通信过程中...

Global site tag (gtag.js) - Google Analytics