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

📄 c_serial.st

📁 moudbus通讯协议, moudbus通讯协议, moudbus通讯协议,
💻 ST
📖 第 1 页 / 共 3 页
字号:
// *** Der Empfangsbuffer wird dabei ebenfalls  ***
// ***  geloescht 								***
// ***     										***
// *** --> Kein Uebergabeparameter    			***
// *** <-- Kein Rueckgabeparameter              ***
// ***     										***
// ************************************************
//
//[#ENGLISH]
// ************************************************
// *************  Serial COM close   *************
// ************************************************
// ***     										***
// *** This Function deletes an initialized COM ***
// *** Receiving Buffer also will be cleared    ***
// ***     										***
// *** --> Not in use  							***
// *** <-- Not in use                           ***
// ***     										***
// ************************************************
FUNCTION GLOBAL Serial::Ser_close

	IF pHandle > 0 THEN
		SERUSER_Close(pHandle);
		// Now Receiving Buffer is also cleared
	ELSE
		Error_S := SERUSER_GetError(pHandle);
	END_IF;

END_FUNCTION //GLOBAL serial::Ser_close
//[#DEUTSCH]
// ***************************************************************************
// **************** 		COMMAND SERVER READ               ****************
// ***************************************************************************
// ***																	   ***
// ***        Funktion prueft den Empfangsbuffer und schaufelt		       ***
// ***         die momentan empfangenen Zeichen in einen Internen    	   ***
// ***         Buffer ( 1k ). 											   ***
// ***        Die Adresse des Internen Buffers wird zur點k黚ergeben        ***
// *********														    ******
// ***  <-- output = Pointer des Tempor鋜en Buffers  				   	   ***
// ***************************************************************************
//
//[#ENGLISH]
// ***************************************************************************
// **************** 		COMMAND SERVER READ               ****************
// ***************************************************************************
// ***																	   ***
// ***		  Function checks receiving buffer and puts Data into an       ***
// ***         internal buffer ( 1k ).									   ***
// ***        Pointer of the internal Buffer will be returned			   ***															   ***
// *********														    ******
// ***  <-- output = Pointer of internal receiving buffer			   	   ***
// ***************************************************************************
//
//[<output(EAX)]pointer of receiving buffer $DINT
FUNCTION VIRTUAL GLOBAL Serial::Read
VAR_OUTPUT
	output		: DINT;		// Pointer to Receivinbuffer
END_VAR

  IF pHandle > 0 THEN

	// checks, how many bytes are new in the ReceivingBuffer
	Bufflength := TO_UDINT(SERUSER_GetRecvStatus(pHandle$pVoid));
	
	// puting the received Data into a temporary Buffer
	IF Bufflength > 0 THEN
		Error_S := SERUSER_RecvBlock(pHandle$pVoid,#temp_buf[0],Bufflength$UINT,NIL);
		output := (#temp_buf[0])$DINT;
	END_IF;
	
  ELSE
		Error_S := SERUSER_GetError(pHandle);
  END_IF;

END_FUNCTION //VIRTUAL GLOBAL serial::Read
//[#DEUTSCH]
// *****************************************************************************
// **************** 	    COMMAND SERVER WRITE              ******************
// *****************************************************************************
// ** 																		  **
// **   Am Server Bufflength ist die Anzahl der zu sendenden Bytes            **
// **   zu definieren.                                                        **
// **   Wird die WRITE Funktion des Servers "Command" angesto遝n,             **
// **    so ist dieser die Adresse der zu sendenden Struktur zu 黚ergeben.    **
// **   Als R點kgabewert erh鋖t man einen Errocode(ob erfolgreich oder nicht).**
// ****																	    ****
// **	--> input  = Pointer der Sendestruktur							   	  **
// **   <-- result = Error Code 									   	      **
// *****************************************************************************
//[>input(EAX)]Pointer der Sendestruktur !!! $DINT !!!
//[<result(EAX)]Error Code
//
//[#ENGLISH]
// *****************************************************************************
// **************** 	    COMMAND SERVER WRITE              ******************
// *****************************************************************************
// ** 																		  **
// ** 	-Server Bufflength defines, how many Bytes should be send.			  **
// **   -Sends DATA over the initialized COM				   				  **
// ** 																		  **
// ****																	    ****
// **	--> input  = pointer of sendstruct								   	  **
// **   <-- result = Error Code 									   	      **
// *****************************************************************************
//
//[>input(EAX)]pointer of sendstruct !!! $DINT !!!
//[<result(EAX)]Error Code
FUNCTION VIRTUAL GLOBAL Serial::Write
VAR_INPUT
	input		: DINT;
END_VAR
VAR_OUTPUT
	result		: DINT;
END_VAR
       
	IF pHandle > 0 THEN  

	   Error_S := result := SERUSER_Send(pHandle$pVoid, (input)$pVoid, Bufflength, NIL);

    ELSE
   	   
	   Error_S := SERUSER_GetError(pHandle);

	END_IF;


END_FUNCTION //VIRTUAL GLOBAL serial::Write
//[#DEUTSCH]
// ***************************************************************************
// **************** 		 config_interface                 ****************
// ***************************************************************************
// ** 																		**
// **   Funktion schlie遲 eine Initialisierte Schnittstelle   				**
// **   und initialisiert eine, mit den 躡ergabeparametern, NEU.		 	**
// **   Anschlie遝nd wird noch 黚erpr黤t, ob initialisierung erfolgreich war**
// **   Ersichtlich in Error_S 												**
// ** --------------------------------------------------------------------- **
// ** --> Com_in = COM 1-4													**
// ** --> Baud_in= Baudrate													**
// ** --> wordl_in = wordlength												**
// ** --> Parity_in= NONE, ODD, EVEN, MARK, SPACE							**
// ** --> StopB_in = 1 oder 2												**
// ** <-- ret0 = Pointer von Kommunikationshandle der neu initialisierten COM*
// ***************************************************************************
//[<ret0]Pointer von Kommunikationshandle der neu initialisierten COM
//[>Com_in]COM 1-4
//[>Baud_in]0..SERUSERBAUD_300, 1..600, 2..1200, 3..2400, 4..4800, 5..9600, 6..14400, 7..19200, 8..38400, 9..56000, 10..115200
//[>wordl_in]"wordlength"  5, 6, 7 oder 8
//[>Parity_in]0..SERUSERPARITY_NONE / 1..SERUSERPARITY_ODD / 2..SERUSERPARITY_EVEN / 3..SERUSERPARITY_MARK / 4..SERUSERPARITY_SPACE
//[>StopB_in]1 oder 2
//
//[#ENGLISH]
// ***************************************************************************
// **************** 		 config_interface                 ****************
// ***************************************************************************
// ** 																		**
// **   Closes an initialized COM and initializes a new one  				**
// ** --------------------------------------------------------------------- **
// ** --> Com_in = COM 1-4													**
// ** --> Baud_in= Baudrate													**
// ** --> wordl_in = wordlength												**
// ** --> Parity_in= NONE, ODD, EVEN, MARK, SPACE							**
// ** --> StopB_in = 1 or 2  												**
// ** <-- ret0 = Pointer Handle of new initialized COM                      **
// ***************************************************************************
//[>Com_in]COM 1-4
//[>Baud_in]0..SERUSERBAUD_300, 1..600, 2..1200, 3..2400, 4..4800, 5..9600, 6..14400, 7..19200, 8..38400, 9..56000, 10..115200
//[>wordl_in]"wordlength"  5, 6, 7 or 8
//[>Parity_in]0..SERUSERPARITY_NONE / 1..SERUSERPARITY_ODD / 2..SERUSERPARITY_EVEN / 3..SERUSERPARITY_MARK(HIGH Parity) / 4..SERUSERPARITY_SPACE(LOW Parity)
//[>StopB_in]1 or 2
//[<ret0]Pointer Handle of new initialized COM: IF handle <=0 -> ERROR
FUNCTION GLOBAL Serial::config_interface
VAR_INPUT
	Com_in		: DINT;				// number of new COM to initialize
	Baud_in		: DINT;				// Baudrate for new init
	wordl_in		: DINT;			// BitFormat for new initialization
	Parity_in		: DINT;			// ParityBits for new init
	StopB_in		: DINT;			// Stopbits
END_VAR
VAR_OUTPUT
	ret0		: pVoid;			// Handle
END_VAR

	
	IF pHandle > 0 THEN
		SERUSER_Close(pHandle);	// at first it must be close
	END_IF;
	
	ComNr     := Com_in;	// all Server = inputs
	Baudrate  := Baud_in;
	wordlength:= wordl_in;
	SerParity := Parity_in;
	StopBit := StopB_in;

	// now we are able to initialize the new COM
	ret0 := pHandle := SERUSER_Init(to_UINT(ComNr),to_UINT(Baudrate), to_UINT(SerParity), to_UINT(StopBit), to_UINT(wordlength));
	 
	// check if there is an Error
	Error_S := SERUSER_GetError(pHandle$pVoid);


END_FUNCTION //GLOBAL serial::config_interface

//[#DEUTSCH]
// **********************************************************************************
// *******************           SERIAL CONSTRUCTION          ***********************
// **********************************************************************************
// **																			   **
// *  Funktion initialisiert COM mit den Servereinstellungen.					   **
// **																			   **
// *  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.													*
// ** ----------------------------------------------------------------------------- *																				*
// **  <-- Rueckgabe Server:														*
// **  - Error_S = Error Code														*
// ** ----------------------------------------------------------------------------- *																				*
// **  -Ob die Initilisierung erfolgreich war, is im Sever "Error_S" ersichtlich 	*
// **  -Im Fehlerfall, d.h. bei ung黮tigen Parametern, nicht vorhandener			*
// **    COM-Schnittstelle, etc. ist der Rueckgabewert im Server "pHandle" :		*
// **    0 bzw. der NIL-Pointer														*
// **  -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 Server "Error_S" : OSINUSE(-2)						*
// **																				*
// **  !!!  ACHTUNG: Das Kommunikations-Handle (R點kgabewert) ist f黵 die weiteren  *
// **  !!!           COM-Funktionen notwendig.  									*
// **																			    *
// ** ----------------------------------------------------------------------------- *
// ** erstellt   : RM :  KW 50/01													*
// **********************************************************************************
//[#ENGLISH]
// **********************************************************************************
// *******************           SERIAL CONSTRUCTION          ***********************
// **********************************************************************************
// **																				*
// ** initializes a COM with the Clientsettings										*
// ** Server "Error_S" returns the Error Code of the initialization                 *
// **																				*
// ** --> 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 Server:															*
// **  - Error_S = Error Code														*
// *** ---------------------------------------------------------------------------- *
// **																				*
// **  !!!ATTENTION: Handle will be needed for other functions of SERIAL interface  *
// ** ----------------------------------------------------------------------------- *
// ** created  : RM :  KW 50/01													    *
// **********************************************************************************
FUNCTION  Serial::Serial
VAR_OUTPUT
	ret_code		: CONFSTATES;
END_VAR

 	pHandle := SERUSER_Init(to_UINT(ComNr),to_UINT(Baudrate), to_UINT(SerParity), to_UINT(StopBit), to_UINT(wordlength));
	
	Error_S := SERUSER_GetError(pHandle$pVoid);

	ret_code	:= C_OK;

END_FUNCTION //  Serial::Serial

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -