/* XDemo14: Controls 7-SEG LEDs (use Show5DigitLed). Compiler: BC++ 3.1 Compile mode: large Project: user.c v7000.c vModbus.c [after vcom3002.lib] ..\Lib\7186EL.Lib ..\Lib\tcp_dm32.lib ..\Lib\VcomNNNN.Lib, with NNNN being the lib file's version. 1912345, 19abcde -> Shows 5 digits to 7-SEG LED Show5DigitLed, Show5DigitLedWithDot can show 5 digits to 7-SEG LEDs The two functions can show '0' ~ '9' 'a' ~ 'f' 'A' ~ 'F' ' ', '-', '.' Hardware: uPAC-7186EX [Dec 18, 2008] by Liam */ #include #include #include "..\lib\7186e.h" #include "..\lib\Tcpip32.h" #include "..\lib\vxcomm.h" extern int bLedControl; //key variable, /* 0: disable LED control. Xserver will not show default information to LED. 1: enable LED control. Xserver will show default information to LED. */ void UserCount(void) { /* User's timer trigger function. Please refer to XDemo04 for detail description. Please refer to XDemo09 for example code. */ } void UserInit(void) { /* Initialize user's program. Please refer to XDemo04 for detail description. Please refer to XDemo09 for example code. */ InitLib(); Init5DigitLed(); bLedControl=0; } void UserLoopFun(void) { /* VxComm.exe will call this function every scan time Please refer to XDemo11 for Real-time I/O control */ } char cLED[6]; int UserCmd(unsigned char *Cmd,unsigned char *Response) { /* Xserver executes this function when received a package form TCP port 10000 and the first two bytes are "19". Funtion of Xserver, Please refer to XDemo04 for detail description. */ int i; // set default LED char is blank. for(i=0; i<5; i++) cLED[i]=16; strcpy(cLED, Cmd); for(i=0; i<5; i++) { if(cLED[i]>='0' && cLED[i]<='9') cLED[i]=cLED[i]-'0'; if(cLED[i]>='a' && cLED[i]<='f') cLED[i]=cLED[i]-'a'+10; if(cLED[i]>='A' && cLED[i]<='F') cLED[i]=cLED[i]-'A'+10; if(cLED[i]==' ') cLED[i]=16; if(cLED[i]=='-') cLED[i]=17; if(cLED[i]=='.') cLED[i]=18; Show5DigitLed(i+1,cLED[i]); } strcpy(Response, Cmd); return 1; } int VcomUserBinaryCmd(TCPREADDATA *p) { /* VXCOMM.EXE 2.6.12(04,Sep,2001) or later will support this function. Xserver executes this function when received a package form TCP port 10000 and the first two bytes are "23". Please refer to XDemo04 for detail description. Please refer to XDemo23 for example code. */ return 1; /* any value will be accept */ } int VcomCmdUser(TCPREADDATA *p) { /* VCOM3005 (Feb,22,2002) or later will call this function for PortUser. When packets received by TCP PORT PortUser(user defined) of 7188E/8000E, Xserver will call this function. Please refer to XDemo04 for detail description. */ VcomSendSocket(p->Socket, p->ReadUartChar, p->Length); return 1; /* any value will be accept */ } void PortUserStart(int skt) { /* XS8_3200.Lib Version 3.2.00 (20,Apr,2004) or later version supports this function. When a TCP/IP client connects to the 7188E/8000E via the user's defined port(PortUser), the Xserver calls the function once. Please refer to XDemo04 for detail description. */ skt=skt; //do nothing } void Port9999Start(int skt) { /* XS8_3200.Lib Version 3.2.00 (20,Apr,2004) or later version supports this function. When a TCP/IP client connects to the 7188E/8000E TCP port 9999, the Xserver calls the function once. Please refer to XDemo04 for detail description. */ skt=skt; //do nothing } void Port502Start(int skt) { /* XS8_3200.Lib Version 3.2.00 (20,Apr,2004) or later version supports this function. When a TCP/IP client connects to the 7188E/8000E TCP port 502, the Xserver calls the function once. Please refer to XDemo04 for detail description. */ skt=skt; //do nothing }