📄 c_serial.st
字号:
#ifdef LASAL_VERSION
#if LASAL_VERSION > 57
//LASAL_INCLUDES
#include "..\Header Files\Needs\Serial.h"
#endif//LASALVERSION > 57
#endif//LASAL_VERSION
//-----------------------------------------------------------------------------------
//[#DEUTSCH]
// **********************************************************************************
// ************* Serial COM S_Init ********************************************
// **********************************************************************************
// * Funktion initialisiert COM mit den Clienteinstellungenl. *
// * *
// * Ben鰐igte SERVER: *
// * Es stehen hierf黵 vordefinierte Konstanten zur Verf黦ung: *
// ** -ComNr: SERUSERCOM_1 ~ f黵 COM1 ..1 -Baudrate:SERUSERBAUD_300 .. 0 *
// ** SERUSERCOM_2 ~ f黵 COM2 ..2 SERUSERBAUD_600 .. 1 *
// ** SERUSERCOM_3 ~ f黵 COM3 ..3 SERUSERBAUD_1200 .. 2 *
// ** SERUSERCOM_4 ~ f黵 COM4 ..4 SERUSERBAUD_2400 .. 3 *
// ** SERUSERBAUD_4800 .. 4 *
// ** -SerParity (Parity-Bits): SERUSERBAUD_9600 .. 5 *
// ** SERUSERPARITY_NONE ..0 SERUSERBAUD_14400 .. 6 *
// ** SERUSERPARITY_ODD ..1 SERUSERBAUD_19200 .. 7 *
// ** SERUSERPARITY_EVEN ..2 SERUSERBAUD_38400 .. 8 *
// ** SERUSERPARITY_MARK ..3(HIGH Parity) SERUSERBAUD_56000 .. 9 *
// ** SERUSERPARITY_SPACE..4(LOW Parity) SERUSERBAUD_115200 ..10 *
// ** *
// ** -StopBit : 1 oder 2 *
// ** -wordlength: 5, 6, 7 oder 8. *
// ** *
// ** -Als R點kgabe wird ein g黮tiges Kommunikations-Handle zur angegebenen *
// ** Schnittstelle zur點kgeliefert. *
// ** -Ob die Initilisierung erfolgreich war, ist am Server Error_S ersichtlich *
// ** -Im Fehlerfall, d.h. bei ung黮tigen Parametern, nicht vorhandener *
// ** COM-Schnittstelle, etc. ist der R點kgabewert <= 0 *
// ** -Wird als COM-Nummer die COM1 verwendet, so kann, je nach OS-Version, *
// ** diese bereits vom OS selbst f黵 die Online-Kommunikation zur *
// ** LASAL-Software verwendet werden. *
// ** F黵 diesen Fall liefert "S_Init()" als R點kgabewert NIL zur點k *
// ** bzw. GetError() = OSINUSE(-11) *
// ** *
// ** !!! ACHTUNG: Das Kommunikations-Handle (R點kgabewert) ist f黵 die weiteren *
// ** !!! COM-Funktionen notwendig. *
// ** !!! (Es k鰊nen mehrere Schnittstellen gleichzeitig verwendet werden)*
// ** *
// ** ----------------------------------------------------------------------------- *
// ** erstellt : RM : KW 50/01 *
// **********************************************************************************
//[<Handle]Kommunikationshandle: <=0 -> Error
//
// [#ENGLISH]
// **********************************************************************************
// ************* Serial COM S_Init *****************************************
// **********************************************************************************
// ** *
// ** initializes a COM with the Clientsettings *
// ** *
// ** --> NEEDED SERVER's: *
// ** *
// ** -ComNr: SERUSERCOM_1 ~ f黵 COM1 ..1 -Baudrate: SERUSERBAUD_300 .. 0 *
// ** SERUSERCOM_2 ~ f黵 COM2 ..2 SERUSERBAUD_600 .. 1 *
// ** SERUSERCOM_3 ~ f黵 COM3 ..3 SERUSERBAUD_1200 .. 2 *
// ** SERUSERCOM_4 ~ f黵 COM4 ..4 SERUSERBAUD_2400 .. 3 *
// ** SERUSERBAUD_4800 .. 4 *
// ** -SerParity (Parity-Bits): SERUSERBAUD_9600 .. 5 *
// ** SERUSERPARITY_NONE ..0 SERUSERBAUD_14400 .. 6 *
// ** SERUSERPARITY_ODD ..1 SERUSERBAUD_19200 .. 7 *
// ** SERUSERPARITY_EVEN ..2 SERUSERBAUD_38400 .. 8 *
// ** SERUSERPARITY_MARK ..3(HIGH Parity) SERUSERBAUD_56000 .. 9 *
// ** SERUSERPARITY_SPACE..4(LOW Parity) SERUSERBAUD_115200 ..10 *
// ** *
// ** -StopBit : 1 or 2 *
// ** -wordlength: 5, 6, 7 or 8 *
// ** *
// *** ---------------------------------------------------------------------------- *
// ** <-- OUTPUT's: *
// ** - Handle of COM *
// *** ---------------------------------------------------------------------------- *
// ** *
// ** !!!ATTENTION: Handle will be needed for other functions of SERIAL interface *
// ** ----------------------------------------------------------------------------- *
// ** created : RM : KW 50/01 *
// **********************************************************************************
//[<Handle]Handle of COM: <=0 -> Error
FUNCTION GLOBAL Serial::S_Init
VAR_OUTPUT
Handle : pVoid; // Handle of COM
END_VAR
Handle := SERUSER_Init(to_UINT(ComNr),to_UINT(Baudrate), to_UINT(SerParity), to_UINT(StopBit), to_UINT(wordlength));
pHandle := Handle;
Error_S := SERUSER_GetError(pHandle);
END_FUNCTION //GLOBAL serial::S_Init
//
// [#DEUTSCH]
// *********************************************************************************************
// **************************** Serial COM GetError *************************************
// *********************************************************************************************
// ** Wird der Funktion SERUSER_GetError()-NIL 黚ergeben. Wird 黚er allgemein anstehenden Error 黚erpr黤t. ***
// ** Wird ein g黮tiges Handle 黚ergeben, wird speziell f黵 die Einstellungen des ***
// ** Handles 黚erpr黤t. ***
// ** <-- Error_Nr = Error Code ***
// ** ---------------------------------------------------------------------------------------***
// **** ***
// ** !!!! ERROR CODE TABELLE !!!! ***
// ** ***
// ** 0 .. SERERROR_NONE ***
// ** - 1 .. SERERROR_COMNUM -> ComNr <> 1-4 ***
// ** - 2 .. SERERROR_BAUDTABLE -> OS Error ***
// ** - 3 .. SERERROR_BAUDRATE -> Baudrate <> 0-10 ***
// ** - 4 .. SERERROR_PARITY -> Parity <> 0-4 ***
// ** - 5 .. SERERROR_STOPBIT -> Stopbits <> 1-2 ***
// ** - 6 .. SERERROR_WORDLEN ***
// ** -10 .. SERERROR_INUSE -> Com bereits in Verwendung ***
// ** -11 .. SERERROR_OSINUSE -> Com wird bereits vom OS verwendet ***
// ** -12 .. SERERROR_NOTAVAIL -> CPU verf黦t 黚er die angegebene COM nicht ***
// ** -13 .. SERERROR_NOMEM -> OS Error ***
// ** -14 .. SERERROR_NOHANDLE ***
// ** -15 .. SERERROR_PARAMETER -> einer der angegebenen Funktionen wurde einfalscher Pointer 黚erg. (z.B:NIL)
// ** -16 .. SERERROR_RECVBUF -> SetBuffer erhielt einen zukleinen Wert f黵 Empf.buffergr鲞e: muss >= 128 sein
// ** -17 .. SERERROR_SENDBUF -> der Sendefunktion wurde NIL 黚ergeben ***
// ** -19 .. SERERROR_RECVERROR -> RecvChar od. RecvBlock wurden aufgerufen, es befinden sich aber KEINE Daten im Empf.buffer
// ** -20 .. SERERROR_SENDERROR -> Sendevorgang konnte nicht abgeschlossen werden. (Unterbr., Sendbuffer voll, ...)
// ** ---------------------------------------------------------------------------------------***
// ** erstellt : RM : KW 50/01 ***
// *********************************************************************************************
//[<Error_Nr]( 0 ) .. ( -20 )
//
//[#ENGLISH]
// *********************************************************************************************
// ** SERUSER_GetError():
// ** If Handle = NIL the function will return a general ERROR Code ***
// ** Handle = Handle -> ErrorCode of the COM initialized with this Handle ***
// ********* ------------------------------------------------------------------------ **********
// ** <-- Error_Nr = Error Code ***
// ** ---------------------------------------------------------------------------------------***
// **** ***
// ** !!!! ERROR CODE TABELLE !!!! ***
// ** ***
// ** 0 .. SERERROR_NONE ***
// ** - 1 .. SERERROR_COMNUM -> ComNr <> 1-4 ***
// ** - 2 .. SERERROR_BAUDTABLE -> OS Error ***
// ** - 3 .. SERERROR_BAUDRATE -> Baudrate <> 0-10 ***
// ** - 4 .. SERERROR_PARITY -> Parity <> 0-4 ***
// ** - 5 .. SERERROR_STOPBIT -> Stopbits <> 1-2 ***
// ** - 6 .. SERERROR_WORDLEN ***
// ** -10 .. SERERROR_INUSE -> Com allready in use ***
// ** -11 .. SERERROR_OSINUSE -> Com allready in use of OS ***
// ** -12 .. SERERROR_NOTAVAIL -> CPU has no COM of this NR ***
// ** -13 .. SERERROR_NOMEM -> OS Error ***
// ** -14 .. SERERROR_NOHANDLE ***
// ** -15 .. SERERROR_PARAMETER -> WRONG INPUT ***
// ** -16 .. SERERROR_RECVBUF -> Receiving Buffer too low, has to bigger then >= 128 Byte's**
// ** -17 .. SERERROR_SENDBUF -> INPUT was NIL ***
// ** -19 .. SERERROR_RECVERROR -> No DATA in Receiving Buffer ***
// ** -20 .. SERERROR_SENDERROR -> sending process couldn't be ended (disturbance., sendbuffer overflow, ...)
// *********************************************************************************************
//[<Error_Nr]Error Code: ( 0 ) .. ( -20 ) detail info ->DOC
FUNCTION GLOBAL Serial::GetError
VAR_OUTPUT
Error_Nr : DINT;
END_VAR
Error_S:= Error_Nr := SERUSER_GetError(pHandle);
END_FUNCTION //GLOBAL serial::GetError
//[#DEUTSCH]
// ***************************************************************
// ****************** Serial COM IsInitialized ****************
// ***************************************************************
// ** Pr黤t ob eine COM zum Handle passt ****
// ** R點kgabewert : 0 = keine Initialisierung ****
// ** 1 = initialisiert ****
// **** ----------------------------------------------------- ****
// ** <-- ret0 = Initialisiert 0=NEIN/1=JA ****
// ***************************************************************
//[<ret0]Initialisation 0=NEIN/1=JA
//
//[#ENGLISH]
// ***************************************************************
// ****************** Serial COM IsInitialized ****************
// ***************************************************************
// ** Checks, if a COM is inialized with inputet COMHANDLE ***
// ** OUTPUT: 0 = NO Initialization ****
// ** 1 = initialized ****
// **** ----------------------------------------------------- ****
// ** <-- ret0 = initialized 0=NO/1=YES ****
// ***************************************************************
//[<ret0]initialized 0=NO/1=YES
FUNCTION GLOBAL Serial::IsInitialized
VAR_OUTPUT
ret0 : UDINT; // 1 = initialized
END_VAR // 0 = no initialization
ret0 := SERUSER_IsInitialized(pHandle);
END_FUNCTION //GLOBAL serial::IsInitialized
//[#DEUTSCH]
// ***************************************************************
// ****************** Serial COM GetInfo ****************
// ***************************************************************
// *** ****
// *** Liefert Informationen zum 黚ergebenen Handle: ****
// *** initialisiert, ComPortNr, IOPort, IRQNum, .... ****
// ***** -------------------------------------------------- ******
// *** --> Info = Pointer auf Struktur LSLAPI_SERIALINFO ****
// *** <-- ret0 = Error Code ****
// ***************************************************************
//[<ret0]Error Code
//[>Info]initialized : USINT; comportnum : USINT; IRQNum : USINT; IOPort : UINT; Baudrate : UINT; Ptr_RecvBuffer : pVoid; Ptr_SendBuffer : pVoid;
//
//[#ENGLISH]
// ***************************************************************
// ****************** Serial COM GetInfo ****************
// ***************************************************************
// *** ****
// *** brings information of Handle ****
// *** initialized, ComPortNr, IOPort, IRQNum, .... ****
// ***** -------------------------------------------------- ******
// *** --> Info = Pointer of Strukt LSLAPI_SERIALINFO ****
// *** <-- ret0 = Error Code ****
// ***************************************************************
//[>Info]initialized : USINT; comportnum : USINT; IRQNum : USINT; IOPort : UINT; Baudrate : UINT; Ptr_RecvBuffer : pVoid; Ptr_SendBuffer : pVoid;
//[<ret0]Error Code: 0-20 detailed info -> DOC
FUNCTION GLOBAL Serial::GetInfo
VAR_INPUT
Info : ^LSLAPI_SERIALINFO;
END_VAR
VAR_OUTPUT
ret0 : DINT;
END_VAR
//FUNCTION GLOBAL Serial::GetInf //+> LSLAPI_SERIALINFO :STRUCT
//VAR_INPUT //| initialized : USINT;
// Info : ^LSLAPI_SERIALINFO;//----------+ IRQNum : UINT;
//END_VAR // IOPort : UINT;
//VAR_OUTPUT // Baudrate : UINT;
// ret0 : DINT; // Ptr_RecvBuffer : pVoid;
//END_VAR // Ptr_SendBuffer : pVoid;
Error_S:= ret0 := SERUSER_GetInfo(pHandle, Info);
END_FUNCTION //GLOBAL serial::GetInfo
//[#DEUTSCH]
// ***************************************************************************
// *************** Serial COM SetBufferRecv **************************
// ***************************************************************************
// *** ******
// ** F黵 jedes Handle kann ein eigener Empfangsbuffer definiert werden.******
// ** !!!! Minimumgroesse 128 Byte !!!! ******
// ** Wird kein Empfangsbuffer definiert, wird der Defaultbuffer ******
// ** mit der Gr鲞e von 1K (1024 Byte), verwendet. ******
// **** ------------------------------------------------------------------****
// ** ******
// *** --> recvBuffer = Pointer des Empfangsbuffers ******
// *** --> bufferLength = Gr鲞e des Buffers ******
// *** <-- ret0 = Error Code ******
// ***************************************************************************
//[<ret0]Error Code
//[>recvBuffer]Pointer des Empfangsbuffers
//[>bufferLength]Gr鲞e des Buffers
//
//[#ENGLISH]
// ***************************************************************************
// *************** Serial COM SetBufferRecv **************************
// ***************************************************************************
// *** ******
// ** Each user is able to define the receiving buffer for himself ******
// ** !!!! Minimumsize 128 Byte !!!! ******
// ** If no Receivingbuffer is initialized, a DEFAULbuffer (1024 Byte) ******
// ** will be used ******
// **** ------------------------------------------------------------------****
// ** ******
// *** --> recvBuffer = Pointer of ReceivingBuffer ******
// *** --> bufferLength = Buffersize ******
// *** <-- ret0 = Error Code ******
// ***************************************************************************
//[>recvBuffer]Pointer of Receiving Buffer
//[>bufferLength]size of buffer
//[<ret0]Error Code: detailed info -> DOC
FUNCTION GLOBAL Serial::SetBufferRecv
VAR_INPUT
recvBuffer : pVoid; // Pointer of RecBuffer
bufferLength: UDINT; // Buffer size
END_VAR
VAR_OUTPUT
ret0 : DINT; // Errorcode (look Error Code Table of GetError)
END_VAR
Error_S := ret0 := SERUSER_SetBufferRecv(pHandle, recvBuffer, bufferLength);
END_FUNCTION //GLOBAL serial::SetBufferRecv
//[#DEUTSCH]
// ***************************************************************************
// **************** Serial COM Ser_Send ***********************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -