From: Martin H. <mh...@us...> - 2005-03-18 23:14:00
|
Update of /cvsroot/opengtoolkit/serial/c_source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22520/c_source Modified Files: lv_error.cpp lvserial.cpp lvserial.def lvserial.h Log Message: Redesign Index: lv_error.cpp =================================================================== RCS file: /cvsroot/opengtoolkit/serial/c_source/lv_error.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** lv_error.cpp 20 Jan 2005 16:49:45 -0000 1.1 --- lv_error.cpp 18 Mar 2005 23:13:48 -0000 1.2 *************** *** 182,186 **** { if (pszReason != NULL) ! LStrPrintf(pError->shSource,(CStr)"%s<err>", pszSource, pszReason); else LStrPrintf(pError->shSource,(CStr)"%s", pszSource); --- 182,186 ---- { if (pszReason != NULL) ! LStrPrintf(pError->shSource,(CStr)"%s<err>%s", pszSource, pszReason); else LStrPrintf(pError->shSource,(CStr)"%s", pszSource); *************** *** 263,269 **** NULL); ! LStrPrintf(pError->shSource, (CStr)"%s<err>%s", pszSource, pszWinErrMsg); ! ! LocalFree(pszWinErrMsg); } } --- 263,273 ---- NULL); ! if (pszWinErrMsg != NULL) ! { ! LStrPrintf(pError->shSource, (CStr)"%s<err>%s", pszSource, pszWinErrMsg); ! LocalFree(pszWinErrMsg); ! } ! else ! LStrPrintf(pError->shSource, (CStr)"%s", pszSource); } } Index: lvserial.cpp =================================================================== RCS file: /cvsroot/opengtoolkit/serial/c_source/lvserial.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** lvserial.cpp 20 Jan 2005 16:49:45 -0000 1.1 --- lvserial.cpp 18 Mar 2005 23:13:48 -0000 1.2 *************** *** 3,9 **** * Serial Port API * ! * Martin Henz Systemtechnik, Stuttgart * ! * */ #define _WIN32_WINNT 0x0500 --- 3,24 ---- * Serial Port API * [...5569 lines suppressed...] ! { ! DSDisposeHandle((**halsPorts)->elt[i]); ! } ! } ! ! //adjust array size or allocate new array ! if ((err = NumericArrayResize( uL, 1L, (UHandle *)halsPorts, 1)) != noErr) ! { ! lv_EasyErrBld(err, __FUNCTION__, pError); ! return; ! } ! (**halsPorts)->dimSize = 0; ! (**halsPorts)->elt[0] = NULL; ! ! bo = ListPorts(lvListPortsCB, halsPorts); ! ! if (bo == FALSE) ! lv_WinErrBld(GetLastError(), __FUNCTION__, pError); } Index: lvserial.def =================================================================== RCS file: /cvsroot/opengtoolkit/serial/c_source/lvserial.def,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** lvserial.def 20 Jan 2005 16:49:45 -0000 1.1 --- lvserial.def 18 Mar 2005 23:13:49 -0000 1.2 *************** *** 3,6 **** --- 3,7 ---- EXPORTS CommClosePort EXPORTS CommWrite + EXPORTS CommWriteAndReceiveEcho EXPORTS CommRead EXPORTS CommBreak *************** *** 24,36 **** --- 25,46 ---- EXPORTS CommConfig EXPORTS CommFlowControl + EXPORTS CommConfig EXPORTS CommTermination + EXPORTS CommTermination2 + EXPORTS CommWriteMode EXPORTS CommTimeout + EXPORTS CommTimeout2 + EXPORTS CommOptions EXPORTS CommLock EXPORTS CommUnLock EXPORTS CommSetUserData EXPORTS CommGetUserData + EXPORTS CommListPorts + EXPORTS CommFree + EXPORTS CommFreePortList EXPORTS lvCommOpenPort EXPORTS lvCommClosePort EXPORTS lvCommWrite + EXPORTS lvCommWriteAndReceiveEcho EXPORTS lvCommRead EXPORTS lvCommBreak *************** *** 54,61 **** --- 64,77 ---- EXPORTS lvCommConfig EXPORTS lvCommFlowControl + EXPORTS lvCommControl EXPORTS lvCommTermination + EXPORTS lvCommTermination2 + EXPORTS lvCommWriteMode EXPORTS lvCommTimeout + EXPORTS lvCommTimeout2 + EXPORTS lvCommOptions EXPORTS lvCommLock EXPORTS lvCommUnLock EXPORTS lvCommSetUserData EXPORTS lvCommGetUserData + EXPORTS lvCommListPorts Index: lvserial.h =================================================================== RCS file: /cvsroot/opengtoolkit/serial/c_source/lvserial.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** lvserial.h 20 Jan 2005 16:49:45 -0000 1.1 --- lvserial.h 18 Mar 2005 23:13:49 -0000 1.2 *************** *** 3,24 **** * Serial Port API * ! * Martin Henz Systemtechnik, Stuttgart * ! * */ #include <windows.h> #include "lv_error.h" #include "plist.h" ! #include <extcode.h> typedef struct { HANDLE hC; char *pszPort; ! int fTermCharEnable; ! char *pcTermChar; long lNumberOfTermChar; ! unsigned long ulTimeout; unsigned long ulNOpened; ! HANDLE hSempaphore; unsigned long ulUserData; HANDLE hEvRead; --- 3,57 ---- * Serial Port API * ! * Martin Henz Systemtechnik, Germany, Stuttgart ! * E-Mail: mar...@mh... ! * Web: http://www.mhst.de * ! * This library is free software; you can redistribute it and/or ! * modify it under the terms of the GNU Lesser General Public ! * License as published by the Free Software Foundation; either ! * version 2.1 of the License, or (at your option) any later version. ! * ! * This library is distributed in the hope that it will be useful, ! * but WITHOUT ANY WARRANTY; without even the implied warranty of ! * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ! * Lesser General Public License for more details. ! * ! * You should have received a copy of the GNU Lesser General Public ! * License along with this library; if not, write to the Free Software ! * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 US ! */ ! ! #ifndef LVSERIAL_CONST_ONLY #include <windows.h> + #include <extcode.h> + #include "lv_error.h" + + #ifdef LVSERIAL_COMPILE_LIBRARY #include "plist.h" ! #include "pcre.h" typedef struct { HANDLE hC; char *pszPort; ! long lTeminationMode; ! char *pcTermination; long lNumberOfTermChar; ! pcre *RegEx; ! pcre_extra *RegExExtra; ! long lWriteMode; ! char *pcStartOfTransmission; ! long lNumberOfStartChars; ! char *pcEndOfTransmission; ! long lNumberOfEndChars; ! unsigned long ulReadIntervalTimeout; ! unsigned long ulReadTotalTimeoutMultiplier; ! unsigned long ulReadTotalTimeoutConstant; ! unsigned long ulWriteTotalTimeoutMultiplier; ! unsigned long ulWriteTotalTimeoutConstant; unsigned long ulNOpened; ! HANDLE hLock; ! HANDLE hInternalLock; unsigned long ulUserData; HANDLE hEvRead; *************** *** 26,29 **** --- 59,77 ---- } COMM, *PCOMM; + #endif //LVSERIAL_COMPILE_LIBRARY + + #ifndef LV_LSTRARRAY + #define LV_LSTRARRAY + #pragma pack (1) + typedef struct { + int32 dimSize; + LStrHandle elt[1]; + } LStrArray; + #pragma pack() + typedef LStrArray **LStrArrayHandle; + #endif + + #endif //LVSERIAL_CONST_ONLY + #define COMM_PARITY_NONE 0 #define COMM_PARITY_ODD 1 *************** *** 55,63 **** #define COMM_STAT_CTS 0x0001 #define COMM_STAT_DSR 0x0002 ! #define COMM_STAT_RLSD 0x0003 ! #define COMM_STAT_XOFFHOLD 0x0004 ! #define COMM_STAT_XOFFSENT 0x0005 ! #define COMM_STAT_EOF 0x0006 ! #define COMM_STAT_TXIM 0x0007 #define COMM_MSTAT_CTS_ON ((DWORD)0x0010) --- 103,111 ---- #define COMM_STAT_CTS 0x0001 #define COMM_STAT_DSR 0x0002 ! #define COMM_STAT_RLSD 0x0004 ! #define COMM_STAT_XOFFHOLD 0x0008 ! #define COMM_STAT_XOFFSENT 0x0010 ! #define COMM_STAT_EOF 0x0020 ! #define COMM_STAT_TXIM 0x0040 #define COMM_MSTAT_CTS_ON ((DWORD)0x0010) *************** *** 71,77 **** --- 119,154 ---- #define COMM_FLOW_DTRDSR 3 + #define COMM_CTRL_OUTXCTSFLOW 0x00000001 + #define COMM_CTRL_OUTXDSRFLOW 0x00000002 + #define COMM_CTRL_DTRENABLE 0x00000004 + #define COMM_CTRL_DTRHANDSHAKE 0x00000008 + #define COMM_CTRL_DSRSENSITIVITY 0x00000010 + #define COMM_CTRL_TXCONTINUEONXOFF 0x00000020 + #define COMM_CTRL_OUTX 0x00000040 + #define COMM_CTRL_INX 0x00000080 + #define COMM_CTRL_ERRORCHAR 0x00000100 + #define COMM_CTRL_NULL 0x00000200 + #define COMM_CTRL_RTSENABLE 0x00000400 + #define COMM_CTRL_RTSHANDSHAKE 0x00000800 + #define COMM_CTRL_RTSTOGGLE 0x00001000 + #define COMM_CTRL_ABORTONERROR 0x00002000 + + #define COMM_TERM_NONE 0 + #define COMM_TERM_CHAR 1 + #define COMM_TERM_STRING 2 + #define COMM_TERM_REGEX 3 + + #define COMM_WRITE_NORMAL 0 + #define COMM_WRITE_STX 1 + #define COMM_WRITE_ETX 2 + #define COMM_WRITE_STXETX (COMM_WRITE_STX | COMM_WRITE_ETX) + + #define COMM_MIN_ERROR -65100 + #define COMM_MAX_ERROR -65060 + #define COMM_WARN_NYBTES 65060 #define COMM_WARN_TERMCHAR 65061 #define COMM_SUCCESS 0 + #define COMM_ERR_NYBTES -65060 #define COMM_ERR_TERMCHAR -65061 #define COMM_ERR_INVALIDLENGTH -65062 *************** *** 88,94 **** #define COMM_ERR_OUTOFMEMORY -65073 #define COMM_ERR_ABORTED -65074 ! #define COMM_ERR_SEMAPHORE -65075 #define COMM_ERR_LOCKTIMEOUT -65076 #define COMM_ERR_NOTLOCKED -65077 #if defined(__cplusplus) || defined(__cplusplus__) --- 165,177 ---- #define COMM_ERR_OUTOFMEMORY -65073 #define COMM_ERR_ABORTED -65074 ! #define COMM_ERR_RESERVED1 -65075 #define COMM_ERR_LOCKTIMEOUT -65076 #define COMM_ERR_NOTLOCKED -65077 + #define COMM_ERR_WRITE -65078 + #define COMM_ERR_OVERRUN -65079 + #define COMM_ERR_TXBUFFERFULL -65080 + #define COMM_ERR_WRONGECHO -65081 + + #ifndef LVSERIAL_CONST_ONLY #if defined(__cplusplus) || defined(__cplusplus__) *************** *** 103,106 **** --- 186,197 ---- unsigned long ulBytesToWrite, unsigned long * pulBytesWritten); + long CommWriteAndReceiveEcho( + HANDLE hComm, + char * pcWriteBuffer, + unsigned long ulBytesToWrite, + unsigned long * pulBytesWritten, + char * pcReadBuffer, + unsigned long * pulBytesRead, + long fStopIfNotEqual); long CommRead( HANDLE hComm, *************** *** 142,145 **** --- 233,244 ---- unsigned char cXOFFCharacter, unsigned char cXONCharacter); + long CommControl( + HANDLE hComm, + unsigned long lFlags, + unsigned short usXonLim, + unsigned short usXoffLim, + char cXonChar, + char cXoffChar, + char cErrorChar); long CommTermination( HANDLE hComm, *************** *** 147,155 **** --- 246,277 ---- char *pcTermCharacter, long lNumberOfTermChar); + long CommTermination2( + HANDLE hComm, + long lTerminationMode, + char *pcTermination, + long lNumberOfTermChar); + long CommWriteMode( + HANDLE hComm, + long lWriteMode, + char *pcStartOfTransmission, + long lNumberofStartChars, + char *pcEndOfTransmission, + long lNumberOfEndChars); long CommTimeout(HANDLE hComm, unsigned long ulTimeout); + long CommTimeout2( + HANDLE hComm, + unsigned long ulReadIntervalTimeout, + unsigned long ulReadTotalTimeoutMultiplier, + unsigned long ulReadTotalTimeoutConstant, + unsigned long ulWriteTotalTimeoutMultiplier, + unsigned long ulWriteTotalTimeoutConstant); + long CommOptions(HANDLE hComm, char *pszOptions); long CommLock(HANDLE hComm, unsigned long ulTimeout); long CommUnLock(HANDLE hComm); long CommSetUserData(HANDLE hComm, unsigned long ulUserData); long CommGetUserData(HANDLE hComm, unsigned long *pulUserData); + long CommListPorts(char ***ports); + void CommFree(LPVOID ptr); + void CommFreePortList(char **ports); /* -----------------------------------------------------------------------------------*/ *************** *** 159,165 **** void lvCommWrite( HANDLE hComm, ! LStrHandle Buffer, unsigned long * pulBytesWritten, pErrC pError); void lvCommRead( HANDLE hComm, --- 281,295 ---- void lvCommWrite( HANDLE hComm, ! LStrHandle shBuffer, unsigned long * pulBytesWritten, pErrC pError); + void lvCommWriteAndReceiveEcho( + HANDLE hComm, + LStrHandle shWriteBuffer, + unsigned long * pulBytesWritten, + LStrHandle shReadBuffer, + unsigned long * pulBytesRead, + LVBoolean *plfStopIfNotEqual, + pErrC pError); void lvCommRead( HANDLE hComm, *************** *** 205,208 **** --- 335,347 ---- unsigned char ucXONCharacter, pErrC pError); + void lvCommControl( + HANDLE hComm, + unsigned long lFlags, + unsigned short usXonLim, + unsigned short usXoffLim, + char cXonChar, + char cXoffChar, + char cErrorChar, + pErrC pError); void lvCommTermination( HANDLE hComm, *************** *** 210,223 **** --- 349,385 ---- LStrHandle shTermCharacter, pErrC pError); + void lvCommTermination2( + HANDLE hComm, + long *lTerminationMode, + LStrHandle shTermination, + pErrC pError); + void lvCommWriteMode( + HANDLE hComm, + long lWriteMode, + LStrHandle shStartOfTransmission, + LStrHandle shEndOfTransmission, + pErrC pError); void lvCommTimeout( HANDLE hComm, unsigned long ulTimeout, pErrC pError); + void lvCommTimeout2( + HANDLE hComm, + unsigned long ulReadIntervalTimeout, + unsigned long ulReadTotalTimeoutMultiplier, + unsigned long ulReadTotalTimeoutConstant, + unsigned long ulWriteTotalTimeoutMultiplier, + unsigned long ulWriteTotalTimeoutConstant, + pErrC pError); + void lvCommOptions(HANDLE hComm, LStrHandle shOptions, pErrC pError); void lvCommLock(HANDLE hComm, unsigned long ulTimeout, pErrC pError); void lvCommUnLock(HANDLE hComm, pErrC pError); void lvCommSetUserData(HANDLE hComm, unsigned long ulUserData, pErrC pError); void lvCommGetUserData(HANDLE hComm, unsigned long *pulUserData, pErrC pError); + void lvCommListPorts(LStrArrayHandle halsPorts, pErrC pError); #if defined(__cplusplus) || defined(__cplusplus__) } #endif + + #endif //LVSERIAL_CONST_ONLY |