我正在撰写我的硕士论文,我坚持编程串口设备通信。
我正在写光声扫描仪。可以创建热图像的应用程序。
我正在使用USB设备来控制更陡的电机和NI设备以获取信号。
我的应用是控制两个步进电机(它应该控制)。
我有一个USB控制器构建来控制这些电机,它在系统中作为COM设备可见。我可以使用超级终端控制它,并使用简单的应用程序,因此通信不是问题。
我在设备和应用程序之间建立双向通信时遇到问题。
我正在向设备发送字符串,如下所示:
serial.Write("CAL\r");
- 这会校准设备。但它可以返回两个响应 - “CAL OK”或“BUSY” - 校准正常或设备正在做其他事情。
我可以在串口上侦听DataRecived事件,然后执行string.equals。
我的应用程序必须控制电机并等待响应。
在一个简单的场景中:
我不知道如何从串口通信开始。如何实现双向沟通。
我有一个简单的类(单例),它可以打开com端口,发送命令并在每个收到的数据上引发事件。
在我的类中创建堆栈并在其上发送所有命令然后在循环中获取它们并发送到设备是否是一个很好的解决方案?
但是如何处理威胁呢? 威胁是否会进入睡眠状态,然后检查是否所有命令都已处理,如果没有则再次威胁睡眠?
我将不胜感激任何建议。
我正在编辑此内容以显示我希望我的应用程序看起来/工作
我有一个简单的应用程序,它有一个TabControl(在应用程序中隐藏选项卡的修改版本,我只能在设计模式下看到它们)。
第一个标签包含一些文字和信息(主要是统计信息)。第二个允许收购。
用户点击第一个标签“Go to Acquisition”上的按钮,该标签显示,但所有按钮都被禁用。
他必须单击“打开校准”对话框。然后在该对话框中,他校准设备并输入所有采集参数(在该对话框中,他可以选择将轮廓移动电机移动到将要测量的样品上的4个角)。校准完成后,他可以关闭该对话框,然后所有控件都在主窗体上激活。现在他可以点击“开始采集”按钮。在陡峭的电机移动到特定位置(针对每个点计算)之后,将获取该点的数据,处理,保存到文件并在图像框中显示为像素。然后电机将移动到另一个点并重复该过程直到样品结束。基本上我会扫描一个正方形样本,将激光移动到特定点,收集数据并从中构建热图像,比如逐个像素地构建图像。
我会尝试用图表或屏幕截图来说明我的想法。