mcu_ctrl_board.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "mcu_ctrl_board.h"
  2. #include "../../rtu_linux_modules/swapi/subjects/serial/serial.h"
  3. // 模块名称
  4. static const char MODULE_NAME[] = "MCUCtrlBoard";
  5. // 定义与单片机进行通讯的结构体, 同时定义结构体对象
  6. typedef struct
  7. {
  8. void *h;
  9. } SMCBCom;
  10. static SMCBCom s_myCom = { 0 };
  11. // 接收处理来自MCU控制板的数据报文帧, 串口-线程回调
  12. static int comio_data_recv_proc(unsigned long wParam/*传递打开的串口句柄*/, unsigned long lParam/*保留暂未使用*/)
  13. {
  14. return 1;
  15. }
  16. // 打开与MCU控制板的串口通讯, 返回: 0成功, <0时失败
  17. int MCBComInit()
  18. {
  19. #ifdef _DEBUG // 上位机单元测试时使用
  20. const char *serialName = "/dev/ttyS0"; int baudrate = 115200;
  21. #else
  22. const char *serialName = "/dev/ttymxc2"; int baudrate = 115200;
  23. #endif
  24. const char *parityCheck = "none"; // 无校检
  25. s_myCom.h = serial_open(serialName, baudrate, parityCheck, \
  26. comio_data_recv_proc, comio_data_recv_proc, NULL);
  27. if(!s_myCom.h)
  28. {
  29. sw_log_error("[%s] failed to open the \"%s:%d(%s parity)\" device!!", \
  30. MODULE_NAME, serialName, baudrate, parityCheck);
  31. MCBComExit(); return -1;
  32. }
  33. return 0;
  34. }
  35. // 关闭与MCU控制板的串口通讯, 返回: 0成功, <0时失败
  36. int MCBComExit()
  37. {
  38. if(s_myCom.h) serial_close(s_myCom.h, WAITTHRD_SAFEEXIT_TIMEOUT);
  39. memset(&s_myCom, 0, sizeof(s_myCom));
  40. return 0;
  41. }