📄 plusecomm-h
字号:
#ifndef __PLUSE_COMM_H_ICL__
#define __PLUSE_COMM_H_ICL__
#include "common.h"
#define START_CHAR '%'
#define END_CHAR '$'
#define ACK_CHAR '!'
#define NO_ACK_CHAR '#'
#define TIME_OVER_CHAR '*'
#define PLUSE_READ_MOTOR_STATUS 0x80
#define PLUSE_READ_ALL_MOTOR_STATUS 0x81
#define PLUSE_WRITE_ONE_STATUS 0x90
#define PLUSE_WRITE_CTRL_BYTE 0x91
#define PUSE_WRITE_STOP_BYTE 0x92
#define PUSE_WRITE_LOWEST_RATE 0x93
#define MAX_PLUSE_MOTOR_NUM 6
#define MAX_PLUSE_BAORD_NUM 6
#define MAX_STATUS_ITEM_NUM 5
typedef struct
{
u_char DirCpl; // 方向求反标志
u_char DdirEnable; // 双向使能
u_char WriteCtrlFlag;
u_char LowestRate;
u_long CurPos; // 当前位置
u_char CurCtrl; // 当前控制
} MOTOR_STATUS_DEF;
typedef struct
{
int StartDevNo; // 设备号
int DevNum; // 设备数量
int InitOk; // 端口初始化标志
int CommNo; // 所用计算机串口号
HANDLE CommId; // 端口索引
OVERLAPPED Overlapped;
MODE_DEF Mode;
int RevStatus; // 端口接收状态
BUF_DEF RecvBuf; // 端口接收缓冲区
BUF_DEF PollCmd; // 下行命令缓冲区
int PollCmdTimeConst; // 轮训指令时间常数
int PollCmdTimeCnt; // 轮训指令时间计数
int ReadStatusCnt;
MOTOR_STATUS_DEF Motor[MAX_PLUSE_BAORD_NUM][MAX_PLUSE_MOTOR_NUM];
int LastCmdAckFlag;
int SendCmdFlag; // 下发一命令标志
int SendTimeConst; // 下发命令超时时间常数
int SendTimeCnt; // 下发命令时间计数
int SendCmdAckFlag;
} PLUSE_MOTOR_DEF;
typedef struct
{
u_char Cnt;
u_char DirCtrl[MAX_STATUS_ITEM_NUM];
u_char Rate[MAX_STATUS_ITEM_NUM];
u_long Pluse[MAX_STATUS_ITEM_NUM];
} STATUS_DEF;
void PluseMotorReadConfig( void );
void PluseMotorInitCommPort( void );
int PluseMotorReadCommPort( char *buf, int len );
int PluseMotorWriteCommPort( char *buf, int len );
void PluseMotorDataProcess( void );
void PluseMotorReadCommData( void );
u_char PluseMotorCalCheckSum( u_char *buf, int len );
void PluseMotorMakeReadStatus( int devidx, int motoridx, int cmd );
// dir = 0, 正向, dir = 1, 反向
// rate = 1 - 100, 代表0.1-10Khz ,
// pluse 永远为正数,代表脉冲数量
void PluseMotorMakeWriteStatus( int devidx, int motoridx, int dir, int rate, int pluse, int quick );
void PluseMotorMakeGroupWriteStatus( int devidx, int motoridx, STATUS_DEF *buf );
void PluseMotorMakeWriteCtrl( int devidx, int motoridx );
void PluseMotorMakeWriteStop( int devidx, int motoridx, int all );
void PluseMotorSendCmd( void );
void PluseMotorTimer( void );
u_char GetPluseMotorCurStatusByte( int devidx, int motoridx );
long GetPluseMotorCurPos( int devidx, int motoridx );
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -