IConfigService.cs 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Collections.ObjectModel;
  4. using System.Threading.Tasks;
  5. using TeamAAS_VP.Enums;
  6. using TeamAAS_VP.Models;
  7. using TeamAAS_VP.Models.Calibration;
  8. using TeamAAS_VP.Models.Feeder;
  9. using TeamAAS_VP.Models.Lights;
  10. using TeamAAS_VP.Models.PLC;
  11. using TeamAAS_VP.Models.ScrewDriver;
  12. using TeamAAS_VP.Models.Torque;
  13. namespace TeamAAS_VP.Interfaces
  14. {
  15. /// <summary>
  16. /// ���ù������񣺹���ϵͳ���á�����������ˡ�Feeder��PLC����̨ͨѶ�����õ���ɾ�IJ���־û���
  17. /// ʵ���ฺ�����ڴ���־û��洢�������ļ������ݿ⣩֮��ͬ�����ݣ����ṩͬ�����첽�ļ���/����ӿڡ�
  18. /// </summary>
  19. public interface IConfigService : IDisposable
  20. {
  21. // Load/Save
  22. /// <summary>
  23. /// ͬ�������������ã��ӳ־û��洢��ȡ�������ڴ��е����ã���
  24. /// </summary>
  25. /// <remarks>
  26. /// �÷���Ϊ�������ã�������Ӧ������ʱ����ȷ��Ҫͬ�����صij�����
  27. /// ʵ��Ӧ��֤�ڷ�������ʱ��¼��־���ڱ�Ҫʱ�׳��쳣��֪ͨ���÷���
  28. /// </remarks>
  29. void LoadAll();
  30. /// <summary>
  31. /// �첽�����������ã��ӳ־û��洢��ȡ�������ڴ��е����ã���
  32. /// </summary>
  33. /// <returns>һ����ʾ�첽���ز���������</returns>
  34. Task LoadAllAsync();
  35. /// <summary>
  36. /// ͬ���������е�ǰ�ڴ��е����õ��־û��洢��
  37. /// </summary>
  38. /// <remarks>
  39. /// �÷���Ϊ�������ã���������Ҫ������֤���ó־û��ij�����
  40. /// </remarks>
  41. void SaveAll();
  42. /// <summary>
  43. /// �첽�������е�ǰ�ڴ��е����õ��־û��洢��
  44. /// </summary>
  45. /// <returns>��ʾ���������ɵ�����</returns>
  46. Task SaveAllAsync();
  47. // Cameras
  48. /// <summary>
  49. /// ��ȡ������ע��������Ϣ��ֻ�����ϡ�
  50. /// </summary>
  51. /// <returns>�����Ϣ��ֻ�����Ͽ��ա�</returns>
  52. IReadOnlyCollection<CameraInfo> GetAllCameras();
  53. /// <summary>
  54. /// ���ݱ�ʶ��ȡ���������Ϣ��
  55. /// </summary>
  56. /// <param name="id">�����Ψһ��ʶ����</param>
  57. /// <returns>��Ӧ�� <see cref="CameraInfo"/> ʵ������δ�ҵ��򷵻� null��</returns>
  58. CameraInfo GetCamera(Guid id);
  59. /// <summary>
  60. /// ���������ָ���������Ϣ��
  61. /// </summary>
  62. /// <param name="camera">Ҫ��������µ������Ϣ������Ϊ null��</param>
  63. /// <exception cref="ArgumentNullException">�� <paramref name="camera"/> Ϊ null ʱ�׳���</exception>
  64. CameraInfo AddOrUpdateCamera(CameraInfo camera);
  65. /// <summary>
  66. /// �Ƴ�ָ����ʶ�������Ϣ��
  67. /// </summary>
  68. /// <param name="id">Ҫ�Ƴ��������Ψһ��ʶ����</param>
  69. /// <returns>����ҵ����Ƴ��ɹ��򷵻� true�����򷵻� false��</returns>
  70. bool RemoveCamera(Guid id);
  71. /// <summary>
  72. /// �ж��Ƿ����ָ����ʶ��������á�
  73. /// </summary>
  74. /// <param name="id">���Ψһ��ʶ����</param>
  75. /// <returns>�����򷵻� true�����򷵻� false��</returns>
  76. bool ContainsCamera(Guid id);
  77. // Robots
  78. /// <summary>
  79. /// ��ȡ������ע��Ļ�������Ϣ��ֻ�����ϡ�
  80. /// </summary>
  81. /// <returns>��������Ϣ��ֻ�����Ͽ��ա�</returns>
  82. IReadOnlyCollection<RobotInfo> GetAllRobots();
  83. /// <summary>
  84. /// ���ݱ�ʶ��ȡ������������Ϣ��
  85. /// </summary>
  86. /// <param name="id">�����˵�Ψһ��ʶ����</param>
  87. /// <returns>��Ӧ�� <see cref="RobotInfo"/> ʵ������δ�ҵ��򷵻� null��</returns>
  88. RobotInfo GetRobot(Guid id);
  89. /// <summary>
  90. /// ���������ָ���Ļ�������Ϣ��
  91. /// </summary>
  92. /// <param name="robot">Ҫ��������µĻ�������Ϣ������Ϊ null��</param>
  93. /// <exception cref="ArgumentNullException">�� <paramref name="robot"/> Ϊ null ʱ�׳���</exception>
  94. RobotInfo AddOrUpdateRobot(RobotInfo robot);
  95. /// <summary>
  96. /// �Ƴ�ָ����ʶ�Ļ�������Ϣ��
  97. /// </summary>
  98. /// <param name="id">Ҫ�Ƴ��Ļ����˵�Ψһ��ʶ����</param>
  99. /// <returns>����ҵ����Ƴ��ɹ��򷵻� true�����򷵻� false��</returns>
  100. bool RemoveRobot(Guid id);
  101. /// <summary>
  102. /// �ж��Ƿ����ָ����ʶ�Ļ��������á�
  103. /// </summary>
  104. /// <param name="id">������Ψһ��ʶ����</param>
  105. /// <returns>�����򷵻� true�����򷵻� false��</returns>
  106. bool ContainsRobot(Guid id);
  107. /// <summary>
  108. /// �޸�ָ��������id�IJ�������
  109. /// </summary>
  110. /// <param name="id">������Ψһ��ʶ����</param>
  111. /// <param name="stepDistance">��������</param>
  112. /// <returns></returns>
  113. bool UpdateRobotStepDistance(Guid id, double stepDistance);
  114. /// <summary>
  115. /// ��ȡָ��������Id�IJ�������
  116. /// </summary>
  117. /// <param name="id"></param>
  118. /// <returns></returns>
  119. double GetRobotStepDistance(Guid id);
  120. // Feeders
  121. /// <summary>
  122. /// ��ȡ������ע��� Feeder ��Ϣ��ֻ�����ϡ�
  123. /// </summary>
  124. /// <returns>Feeder ��Ϣ��ֻ�����Ͽ��ա�</returns>
  125. IReadOnlyCollection<FeederInfo> GetAllFeeders();
  126. /// <summary>
  127. /// ���ݱ�ʶ��ȡ���� Feeder ��Ϣ��
  128. /// </summary>
  129. /// <param name="id">Feeder ��Ψһ��ʶ����</param>
  130. /// <returns>��Ӧ�� <see cref="FeederInfo"/> ʵ������δ�ҵ��򷵻� null��</returns>
  131. FeederInfo GetFeeder(Guid id);
  132. /// <summary>
  133. /// ���������ָ���� Feeder ��Ϣ��
  134. /// </summary>
  135. /// <param name="feeder">Ҫ��������µ� Feeder ��Ϣ������Ϊ null��</param>
  136. /// <exception cref="ArgumentNullException">�� <paramref name="feeder"/> Ϊ null ʱ�׳���</exception>
  137. FeederInfo AddOrUpdateFeeder(FeederInfo feeder);
  138. /// <summary>
  139. /// �Ƴ�ָ����ʶ�� Feeder ��Ϣ��
  140. /// </summary>
  141. /// <param name="id">Ҫ�Ƴ��� Feeder ��Ψһ��ʶ����</param>
  142. /// <returns>����ҵ����Ƴ��ɹ��򷵻� true�����򷵻� false��</returns>
  143. bool RemoveFeeder(Guid id);
  144. /// <summary>
  145. /// �ж��Ƿ����ָ����ʶ�� Feeder ���á�
  146. /// </summary>
  147. /// <param name="id">Feeder Ψһ��ʶ����</param>
  148. /// <returns>�����򷵻� true�����򷵻� false��</returns>
  149. bool ContainsFeeder(Guid id);
  150. // PLCs
  151. /// <summary>
  152. /// ��ȡ������ע��� PLC ��Ϣ��ֻ�����ϡ�
  153. /// </summary>
  154. /// <returns>PLC ��Ϣ��ֻ�����Ͽ��ա�</returns>
  155. IReadOnlyCollection<PlcInfo> GetAllPlcs();
  156. /// <summary>
  157. /// ���ݱ�ʶ��ȡ���� PLC ��Ϣ��
  158. /// </summary>
  159. /// <param name="id">PLC ��Ψһ��ʶ����</param>
  160. /// <returns>��Ӧ�� <see cref="PlcInfo"/> ʵ������δ�ҵ��򷵻� null��</returns>
  161. PlcInfo GetPlc(Guid id);
  162. /// <summary>
  163. /// ���������ָ���� PLC ��Ϣ��
  164. /// </summary>
  165. /// <param name="plc">Ҫ��������µ� PLC ��Ϣ������Ϊ null��</param>
  166. /// <exception cref="ArgumentNullException">�� <paramref name="plc"/> Ϊ null ʱ�׳���</exception>
  167. PlcInfo AddOrUpdatePlc(PlcInfo plc);
  168. /// <summary>
  169. /// �Ƴ�ָ����ʶ�� PLC ��Ϣ��
  170. /// </summary>
  171. /// <param name="id">Ҫ�Ƴ��� PLC ��Ψһ��ʶ����</param>
  172. /// <returns>����ҵ����Ƴ��ɹ��򷵻� true�����򷵻� false��</returns>
  173. bool RemovePlc(Guid id);
  174. /// <summary>
  175. /// �ж��Ƿ����ָ����ʶ�� PLC ���á�
  176. /// </summary>
  177. /// <param name="id">PLC Ψһ��ʶ����</param>
  178. /// <returns>�����򷵻� true�����򷵻� false��</returns>
  179. bool ContainsPlc(Guid id);
  180. // Plc Addresses
  181. /// <summary>
  182. /// Get all PlcAddress entries
  183. /// </summary>
  184. /// <returns></returns>
  185. PlcAddressConfig GetPlcAddresses();
  186. // Background TCP
  187. /// <summary>
  188. /// ��ȡ��̨ͨѶ��TCP/IP�����á�
  189. /// </summary>
  190. /// <returns>��ǰ��̨ TCP ���ÿ��ա�</returns>
  191. BgTcpIP GetBgTcp();
  192. /// <summary>
  193. /// ���ú�̨ͨѶ��TCP/IP�����ã��������ڴ棩��
  194. /// </summary>
  195. /// <param name="cfg">�µĺ�̨ TCP ���ã�����Ϊ null��</param>
  196. /// <exception cref="ArgumentNullException">�� <paramref name="cfg"/> Ϊ null ʱ�׳���</exception>
  197. void SetBgTcp(BgTcpIP cfg);
  198. /// <summary>
  199. /// ����ǰ�ڴ��еĺ�̨ TCP ���ñ��浽�־û��洢��
  200. /// </summary>
  201. void SaveBgTcp();
  202. // Background Modbus
  203. /// <summary>
  204. /// ��ȡ��̨ Modbus TCP ���á�
  205. /// </summary>
  206. /// <returns>��ǰ��̨ Modbus TCP ���ÿ��ա�</returns>
  207. BgModbusTcp GetBgModbusTcp();
  208. /// <summary>
  209. /// ���ú�̨ Modbus TCP ���ã��������ڴ棩��
  210. /// </summary>
  211. /// <param name="cfg">�µĺ�̨ Modbus TCP ���ã�����Ϊ null��</param>
  212. /// <exception cref="ArgumentNullException">�� <paramref name="cfg"/> Ϊ null ʱ�׳���</exception>
  213. void SetBgModbusTcp(BgModbusTcp cfg);
  214. /// <summary>
  215. /// ����ǰ�ڴ��еĺ�̨ Modbus TCP ���ñ��浽�־û��洢��
  216. /// </summary>
  217. void SaveBgModbusTcp();
  218. //ϵͳ����
  219. /// <summary>
  220. /// ��ȡϵͳ����
  221. /// </summary>
  222. /// <returns></returns>
  223. SystemConfiguration GetSystemConfiguration();
  224. /// <summary>
  225. /// ����ϵͳ����
  226. /// </summary>
  227. void SaveSystemConfiguration(SystemConfiguration systemConfiguration);
  228. /// <summary>
  229. /// ��ȡ��ǰ����
  230. /// </summary>
  231. /// <returns></returns>
  232. Language GetCurrentLanguage();
  233. /// <summary>
  234. /// ���õ�ǰ����
  235. /// </summary>
  236. /// <param name="language"></param>
  237. void SetCurrentLanguage(Language language);
  238. //��������
  239. /// <summary>
  240. /// ��ȡ������������
  241. /// </summary>
  242. /// <returns></returns>
  243. IReadOnlyCollection<FeederClearWork> GetAllClearanceTasks();
  244. /// <summary>
  245. /// �����������������
  246. /// </summary>
  247. /// <param name="task"></param>
  248. /// <returns></returns>
  249. FeederClearWork AddOrUpdateClearanceTask(FeederClearWork task);
  250. /// <summary>
  251. /// �Ƴ���������
  252. /// </summary>
  253. /// <param name="id"></param>
  254. /// <returns></returns>
  255. bool RemoveClearanceTask(Guid id);
  256. /// <summary>
  257. /// ���������������
  258. /// </summary>
  259. void ClearAllClearanceTasks();
  260. /// <summary>
  261. /// �ж��Ƿ����ָ����ʶ����������
  262. /// </summary>
  263. /// <param name="id"></param>
  264. /// <returns></returns>
  265. bool ContainsClearanceTask(Guid id);
  266. /// <summary>
  267. /// ���ݱ�ʶ��ȡ��������������Ϣ
  268. /// </summary>
  269. /// <param name="id"></param>
  270. /// <returns></returns>
  271. FeederClearWork GetClearanceTask(Guid id);
  272. /// <summary>
  273. /// �ж��Ƿ����ָ����ŵ���������
  274. /// </summary>
  275. /// <param name="taskNumber"></param>
  276. /// <returns></returns>
  277. bool ContainsClearanceTaskByNumber(int taskNumber);
  278. /// <summary>
  279. /// ���ݱ�Ż�ȡ��������������Ϣ
  280. /// </summary>
  281. /// <param name="taskNumber"></param>
  282. /// <returns></returns>
  283. FeederClearWork GetClearanceTaskByNumber(int taskNumber);
  284. // Light controllers and channels
  285. /// <summary>
  286. /// ��ȡ������ע��ĵƹ��������Ϣ��ֻ�����ϡ�
  287. /// </summary>
  288. /// <returns>�ƹ��������Ϣ��ֻ�����Ͽ��ա�</returns>
  289. IReadOnlyCollection<LightControllerConfig> GetAllLightControllers();
  290. /// <summary>
  291. /// ���ݱ�ʶ��ȡ�����ƹ��������Ϣ��
  292. /// </summary>
  293. /// <param name="id">�ƹ��������Ψһ��ʶ����</param>
  294. /// <returns>��Ӧ�� <see cref="LightControllerConfig"/> ʵ������δ�ҵ��򷵻� null��</returns>
  295. LightControllerConfig GetLightController(int id);
  296. /// <summary>
  297. /// ���������ָ���ĵƹ��������Ϣ��
  298. /// </summary>
  299. /// <param name="controller">Ҫ��������µĵƹ��������Ϣ������Ϊ null��</param>
  300. /// <exception cref="ArgumentNullException">�� <paramref name="controller"/> Ϊ null ʱ�׳���</exception>
  301. LightControllerConfig AddOrUpdateLightController(LightControllerConfig controller);
  302. /// <summary>
  303. /// �Ƴ�ָ����ʶ�ĵƹ��������Ϣ��
  304. /// </summary>
  305. /// <param name="id">Ҫ�Ƴ��ĵƹ��������Ψһ��ʶ����</param>
  306. /// <returns>����ҵ����Ƴ��ɹ��򷵻� true�����򷵻� false��</returns>
  307. bool RemoveLightController(int id);
  308. /// <summary>
  309. /// �ж��Ƿ����ָ����ʶ�ĵƹ���������á�
  310. /// </summary>
  311. /// <param name="id">�ƹ������Ψһ��ʶ����</param>
  312. /// <returns>�����򷵻� true�����򷵻� false��</returns>
  313. bool ContainsLightController(int id);
  314. /// <summary>
  315. /// ��ȡ������ע��ĵƹ�ͨ����Ϣ��ֻ�����ϡ�
  316. /// </summary>
  317. /// <returns>�ƹ�ͨ����Ϣ��ֻ�����Ͽ��ա�</returns>
  318. IReadOnlyCollection<ChannelConfig> GetAllLightChannels();
  319. /// <summary>
  320. /// ����ȫ��������ȡ�����ƹ�ͨ����Ϣ��
  321. /// </summary>
  322. /// <param name="globalIndex">�ƹ�ͨ����ȫ��������</param>
  323. /// <returns>��Ӧ�� <see cref="ChannelConfig"/> ʵ������δ�ҵ��򷵻� null��</returns>
  324. ChannelConfig GetLightChannelByGlobalIndex(int globalIndex);
  325. /// <summary>
  326. /// �ж��Ƿ����ָ��ȫ�������ĵƹ�ͨ�����á�
  327. /// </summary>
  328. /// <param name="globalIndex">�ƹ�ͨ����ȫ��������</param>
  329. /// <returns>�����򷵻� true�����򷵻� false��</returns>
  330. bool ContainsLightChannelByGlobalIndex(int globalIndex);
  331. /// <summary>
  332. /// ����ָ���ƹ�ͨ����Ĭ������ֵ�����浽�־û��洢��
  333. /// </summary>
  334. /// <param name="globalIndex">�ƹ�ͨ����ȫ��������</param>
  335. /// <param name="brightness">�µ�Ĭ������ֵ����ΧӦ�ں��ʵ������ڡ�</param>
  336. /// <returns>����ҵ������³ɹ��򷵻� true�����򷵻� false��</returns>
  337. bool UpdateChannelDefaultBrightness(int globalIndex, int brightness);
  338. // Screw driver (single device) configuration accessors
  339. /// <summary>
  340. /// ��ȡ�������ã����豸����
  341. /// </summary>
  342. /// <returns>��ǰ�� <see cref="ScrewDriverConfig"/>����δ�����򷵻� null��</returns>
  343. ScrewDriverConfig GetScrewDriverConfig();
  344. /// <summary>
  345. /// ���ò��־û��������ã����豸����
  346. /// </summary>
  347. /// <param name="cfg">�µ����ö��󣬲���Ϊ�ա�</param>
  348. void SetScrewDriverConfig(ScrewDriverConfig cfg);
  349. // Device info - 支持多设备
  350. /// <summary>
  351. /// 获取所有设备信息配置列表
  352. /// </summary>
  353. /// <returns>设备信息列表的只读集合</returns>
  354. IReadOnlyCollection<DeviceInfo> GetAllDeviceInfos();
  355. /// <summary>
  356. /// 根据设备编号获取设备信息(兼容旧API,返回第一个设备)
  357. /// </summary>
  358. DeviceInfo GetDeviceInfo();
  359. /// <summary>
  360. /// 根据设备编号获取设备信息
  361. /// </summary>
  362. /// <param name="deviceNo">设备编号</param>
  363. DeviceInfo GetDeviceInfo(int deviceNo);
  364. /// <summary>
  365. /// 保存设备信息配置(添加或更新)
  366. /// </summary>
  367. void SaveDeviceInfo(DeviceInfo deviceInfo);
  368. /// <summary>
  369. /// 保存所有设备信息列表
  370. /// </summary>
  371. /// <param name="deviceInfoList">设备信息列表</param>
  372. void SaveAllDeviceInfos(IEnumerable<DeviceInfo> deviceInfoList);
  373. /// <summary>
  374. /// 添加新设备
  375. /// </summary>
  376. /// <returns>新添加的设备</returns>
  377. DeviceInfo AddDeviceInfo();
  378. /// <summary>
  379. /// 删除设备
  380. /// </summary>
  381. /// <param name="deviceNo">设备编号</param>
  382. /// <returns>是否删除成功</returns>
  383. bool RemoveDeviceInfo(int deviceNo);
  384. /// <summary>
  385. /// ������ǰ�ڴ��еĵ������ñ��浽�ļ���
  386. /// </summary>
  387. void SaveScrewDriverConfig();
  388. // Screw feeder (material) management
  389. /// <summary>
  390. /// ��ȡ������ע�����˿��������Ϣ��ֻ�����ϡ�
  391. /// </summary>
  392. IReadOnlyCollection<ScrewFeederInfo> GetAllScrewFeeders();
  393. /// <summary>
  394. /// ���ݱ�ʶ��ȡ������˿��������Ϣ��
  395. /// </summary>
  396. ScrewFeederInfo GetScrewFeeder(Guid id);
  397. /// <summary>
  398. /// ���������ָ������˿��������Ϣ��
  399. /// </summary>
  400. ScrewFeederInfo AddOrUpdateScrewFeeder(ScrewFeederInfo feeder);
  401. /// <summary>
  402. /// �Ƴ�ָ����ʶ����˿��������Ϣ��
  403. /// </summary>
  404. bool RemoveScrewFeeder(Guid id);
  405. /// <summary>
  406. /// �ж��Ƿ����ָ����ʶ����˿���������á�
  407. /// </summary>
  408. bool ContainsScrewFeeder(Guid id);
  409. /// <summary>
  410. /// Ϊָ����������ŵݼ�ָ��������ͨ��Ϊ 1�������������㷵�� false
  411. /// </summary>
  412. int DecrementScrewCountByFeederNumber(int feederNumber, int decrement = 1);
  413. /// <summary>
  414. /// ���ָ����������ŵ���˿��Ϣ�����κ���ʣ�������ÿ�/��0��
  415. /// </summary>
  416. void ClearScrewFeederByNumber(int feederNumber);
  417. /// <summary>
  418. /// Ϊָ�����������������˿���κţ�����ԭ��ʣ������������һ����������PackSize��
  419. /// </summary>
  420. void SetBatchForFeederNumber(int feederNumber, string batchNumber);
  421. /// <summary>
  422. /// ��ȡָ����������ŵ�ʣ����˿�������Ҳ������� -1��
  423. /// </summary>
  424. int GetRemainingCountByFeederNumber(int feederNumber);
  425. /// <summary>
  426. /// ��ȡָ����������ŵĵ�������״̬���Ҳ������� false��
  427. /// </summary>
  428. bool GetLowLevelAlarmStatusByFeederNumber(int feederNumber);
  429. /// <summary>
  430. /// ��ij����˿������������������ʱ�ᴥ�����¼��������߿������ϱ��� UI ��ʾ��
  431. /// </summary>
  432. event Action<ScrewFeederInfo> ScrewFeederLowLevelAlarmTriggered;
  433. /// <summary>
  434. /// ���ʣ����˿�Ƿ񱨾�
  435. /// </summary>
  436. bool CheckAlarm(int feederNumber);
  437. //ˢ����¼
  438. /// <summary>
  439. /// ��ȡˢ��������
  440. /// </summary>
  441. /// <returns></returns>
  442. SerialPortConfig GetCardReaderConfig();
  443. /// <summary>
  444. /// ����ˢ��������
  445. /// </summary>
  446. /// <param name="config"></param>
  447. void SaveCardReaderConfig(SerialPortConfig config);
  448. void SaveTorqueReaderConfig(TorqueSerialPortConfig config);
  449. TorqueSerialPortConfig GetTorqueReaderConfig();
  450. CTQ_Data GetCTQDataInfo();
  451. void SaveCTQDataInfo(CTQ_Data cd);
  452. }
  453. }