//--------------------------------------------------------------------------- #include "sio_util.h" //--------------------------------------------------------------------------- typedef unsigned char byte; typedef struct _LDCNMOD { byte modtype; //module type byte modver; //module version number byte statusitems; //definition of items to be returned byte stat; //status byte byte groupaddr; //current group address bool groupleader; //TRUE if group leader void * p; //pointer to specific module's data structure } LDCNMOD; #define MAXSIOERROR 3 //Define PIC baud rate divisors #define PB9600 129 #define PB19200 63 #define PB57600 20 #define PB115200 10 //Module type definitions: #define SERVOMODTYPE 0 #define SERVOHYBTYPE 90 #define IOMODTYPE 2 #define STEPMODTYPE 3 //The following must be created for each new module type: // data structure XXXMOD // Initializer function NewXXXMod // Status reading function GetXXXStat // LdcnInit and SendLdcnCmd must be modified to include calls // to the two functions above #define CKSUM_ERROR 0x02 //Checksum error bit in status byte #define MAXNUMMOD 33 //Initialization and shutdown void InitVars(void); void LdcnSetStopCtrl(byte addr, byte mode); DLLENTRY(int) LdcnInit(char *portname, unsigned int baudrate); DLLENTRY(int) LdcnFullInit(char *portname, unsigned int baudrate); DLLENTRY(int) LdcnRestoreNetwork(char *portname, unsigned int baudrate); DLLENTRY(BOOL) LdcnSendCmd(byte addr, byte cmd, char *datastr, byte n); DLLENTRY(void) FixSioError(); DLLENTRY(void) LdcnShutdown(void); //Module type independant commands (supported by all module types) DLLENTRY(BOOL) LdcnSetGroupAddr(byte addr, byte groupaddr, bool leader); DLLENTRY(BOOL) LdcnDefineStatus(byte addr, byte statusitems); DLLENTRY(BOOL) LdcnReadStatus(byte addr, byte statusitems); DLLENTRY(BOOL) LdcnChangeBaud(byte groupaddr, unsigned int baudrate); DLLENTRY(BOOL) LdcnSynchInput(byte groupaddr); DLLENTRY(BOOL) LdcnNoOp(byte addr); DLLENTRY(BOOL) LdcnHardReset(); DLLENTRY(BOOL) LdcnResetDevice(byte addr); //Retrieve module type independant data from a module's data structure DLLENTRY(byte) LdcnGetStat (byte addr); DLLENTRY(byte) LdcnGetStatItems(byte addr); DLLENTRY(byte) LdcnGetModType (byte addr); DLLENTRY(byte) LdcnGetModVer (byte addr); DLLENTRY(byte) LdcnGetGroupAddr(byte addr); DLLENTRY(BOOL) LdcnGroupLeader (byte addr); DLLENTRY(HANDLE) GetComPort(); DLLENTRY(int) GetSioError(); DLLENTRY(int) IsBusy();