⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c_serial.st

📁 moudbus通讯协议, moudbus通讯协议, moudbus通讯协议,
💻 ST
📖 第 1 页 / 共 3 页
字号:
#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 + -