多串口通信

本文来介绍实验室项目中的项目,重点介绍所编写的多串口程序。

项目背景

在我们的自然基金项目中,我主要负责对非晶丝的阻抗进行研究。非晶丝制备过程主要是由合金丝高温淬火,在晶体还没有成形的时候冷却,从而内部形成非晶结构。因此,具有一般晶体不具备的特性,其中最重要的就是GMI。经过大量前任总结,得出结论:非晶丝阻抗模型是竹节状的。此外,非晶丝具有对角阻抗和非对角阻抗的性质,内部原理在此不做展开。

总体框架

测量非晶丝的阻抗大致流程是这样的:
测量非对角阻抗实验系统框图
在这个基础之上又增加了转台部分,用来测量不同方向磁场对阻抗的影响。
总而言之,信号源产生对非晶丝施加交流激励,电流源产生交变直流磁场,单片机控制ADC采集数据,而上位机通过串口控制这三个部分。实验要求分别控制这几个变量,来研究不同条件对阻抗的影响。下面来分别介绍主要的部分的作用以及其需要注意的地方:

  • 信号源使用程控信号源,需要注意的是每条语句后都要加上一个0x10。
  • 电流源使用,产生施加于亥姆霍兹线圈的电流。由于需要产生反向电流,而电流源不能输出负电流,所以外接一个继电器,通过单片机控制取得将电流取反。
  • 单片机使用STM32,主要作用一个是控制继电器;另一个是控制ADC采样,并将采样数据回传上位机。
  • 转台直接连到上位机,编程决定其转动的速度。
  • 中控电路主要负责放大、整流,以及对AD8302芯片控制。此外,还放置继电器,供其他部分使用。
  • 上位机负责通过串口来控制其他部分。

信号源指令

电流源指令

单片机指令

转台指令

上位机串口程序

我接手这个实验之前,上一届的师兄是使用MFC来编写上位机控制程序的。但MFC编写的程序非常的繁杂,兼容性很差,做出来的界面也是非常的难看。因此,用了一段时间后我就萌生了重写一份的想法。

关于RxTx

谷歌了一下,最适合java串口编程的库就是RxTx了。