<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.autoitscript.com/w/index.php?action=history&amp;feed=atom&amp;title=CommUDF.au3</id>
	<title>CommUDF.au3 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.autoitscript.com/w/index.php?action=history&amp;feed=atom&amp;title=CommUDF.au3"/>
	<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommUDF.au3&amp;action=history"/>
	<updated>2026-05-07T06:37:53Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommUDF.au3&amp;diff=11944&amp;oldid=prev</id>
		<title>Therealhanuta: Redirected page to CommInterface.au3</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommUDF.au3&amp;diff=11944&amp;oldid=prev"/>
		<updated>2013-10-24T11:38:41Z</updated>

		<summary type="html">&lt;p&gt;Redirected page to &lt;a href=&quot;/wiki/CommInterface.au3&quot; title=&quot;CommInterface.au3&quot;&gt;CommInterface.au3&lt;/a&gt;&lt;/p&gt;
&lt;a href=&quot;https://www.autoitscript.com/w/index.php?title=CommUDF.au3&amp;amp;diff=11944&amp;amp;oldid=11942&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Therealhanuta</name></author>
	</entry>
	<entry>
		<id>https://www.autoitscript.com/w/index.php?title=CommUDF.au3&amp;diff=11942&amp;oldid=prev</id>
		<title>Therealhanuta: Created page with &quot;&lt;syntaxhighlight lang=&quot;autoit&quot;&gt; ; #INDEX# ======================================================================================================================= ; Name .........&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.autoitscript.com/w/index.php?title=CommUDF.au3&amp;diff=11942&amp;oldid=prev"/>
		<updated>2013-10-24T09:34:54Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt; ; #INDEX# ======================================================================================================================= ; Name .........&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;autoit&amp;quot;&amp;gt;&lt;br /&gt;
; #INDEX# =======================================================================================================================&lt;br /&gt;
; Name ..........: CommUDF.au3&lt;br /&gt;
; Title .........: Communications Functions of Windows API&lt;br /&gt;
; Description ...: Communications Functions of Windows API calls that have been translated to AutoIt functions.&lt;br /&gt;
; Version Date ..: 2013-10-24&lt;br /&gt;
; AutoIt Version : 3.3.8.1&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363194(v=vs.85).aspx&lt;br /&gt;
; Tag(s) ........: RS-232, serial port, COM port&lt;br /&gt;
; Author(s) .....:&lt;br /&gt;
; Dll(s) ........: kernel32.dll&lt;br /&gt;
; Error handling : Everytime @extended is set, it is filled with @ScriptLineNumber of the error in CommAPI.au3.&lt;br /&gt;
;                  Everytime @extended is set, you can call _WinAPI_GetLastError or _WinAPI_GetLastErrorMessage.&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
&lt;br /&gt;
#include-once&lt;br /&gt;
#include &amp;quot;CommAPIHelper.au3&amp;quot;&lt;br /&gt;
#include &amp;quot;CommUtilities.au3&amp;quot;&lt;br /&gt;
#include &amp;lt;WinAPI.au3&amp;gt;&lt;br /&gt;
#NoAutoIt3Execute&lt;br /&gt;
#AutoIt3Wrapper_Au3Check_Parameters=-q -d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ClosePort&lt;br /&gt;
; Description ...: CLoses a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_ClosePort(Const $hFile)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - True&lt;br /&gt;
;                  Failure - False&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_OpenPort&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ClosePort(Const $hFile)&lt;br /&gt;
	Local $fResult = _WinAPI_CloseHandle($hFile)&lt;br /&gt;
	If @error Then Return SetError(@error, 0, False)&lt;br /&gt;
	Return $fResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ClosePort&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_OpenCOMPort&lt;br /&gt;
; Description ...: Opens a COM Port.&lt;br /&gt;
; Syntax ........: _CommAPI_OpenCOMPort(Const $iPort[, $iBaudRate = Default[, $iParity = Default[, $iByteSize = Default[,&lt;br /&gt;
;                  $iStopBits = Default[, $iReadTotalTimeout = 100]]]]])&lt;br /&gt;
; Parameters ....: $iPort               - [in] A port number.&lt;br /&gt;
;                  $iBaudRate           - [in] The baud rate at which the communications device operates.&lt;br /&gt;
;                  $iParity             - [in] The parity scheme to be used.&lt;br /&gt;
;                  $iByteSize           - [in] Specifies the number of data bits in a character.&lt;br /&gt;
;                  $iStopBits           - [in] Specifies the number of stop bits that define the end of a character: 1, 1.5, or 2.&lt;br /&gt;
;                  $iReadTotalTimeout   - [in] An integer value for total read timeout in milliseconds.&lt;br /&gt;
; Return values .: Success - The open handle to a specified communications device.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_OpenPort, _CommAPI_ClosePort, _CommAPI_CreateModeString&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_OpenCOMPort(Const $iPort, Const $iBaudRate = Default, Const $iParity = Default, Const $iByteSize = Default, Const $iStopBits = Default, Const $iReadTotalTimeout = 100)&lt;br /&gt;
	Local $sMode = _CommAPI_CreateModeString($iPort, $iBaudRate, $iParity, $iByteSize, $iStopBits)&lt;br /&gt;
	Local $hFile = _CommAPI_OpenPort($sMode, $iReadTotalTimeout)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	Return $hFile&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_OpenCOMPort&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_OpenPort&lt;br /&gt;
; Description ...: Opens a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_OpenPort(Const $sMode[, $iReadTotalTimeout = 100])&lt;br /&gt;
; Parameters ....: $sMode               - [in] A device-definition string.&lt;br /&gt;
;                  $iReadTotalTimeout   - [in] An integer value for total read timeout in milliseconds.&lt;br /&gt;
; Return values .: Success - The open handle to a specified communications device.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_OpenCOMPort, _CommAPI_ClosePort, _CommAPI_SetCommState&lt;br /&gt;
; Link ..........: http://msdn.microsoft.com/en-us/library/aa363214(v=vs.85).aspx&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_OpenPort(Const $sMode, Const $iReadTotalTimeout = 100)&lt;br /&gt;
	Local $sFileName = &amp;quot;\\.\&amp;quot; &amp;amp; StringLeft($sMode, StringInStr($sMode, &amp;quot;:&amp;quot;) - 1)&lt;br /&gt;
	Local $hFile = _WinAPI_CreateFile($sFileName, 2, 6)&lt;br /&gt;
	If @error Then Return SetError(@error)&lt;br /&gt;
	If $hFile &amp;lt;= 0 Then Return SetError(6)&lt;br /&gt;
&lt;br /&gt;
	Local $tDCB = DllStructCreate($tagDCB)&lt;br /&gt;
	Local $tCommTimeouts = DllStructCreate($tagCOMMTIMEOUTS)&lt;br /&gt;
&lt;br /&gt;
	_CommAPI_BuildCommDCBAndTimeouts($sMode, $tDCB, $tCommTimeouts)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, 0)&lt;br /&gt;
&lt;br /&gt;
	_CommAPI_SetCommTimeoutsElement($tCommTimeouts, &amp;quot;ReadTotalTimeoutConstant&amp;quot;, $iReadTotalTimeout)&lt;br /&gt;
	If @error Then Return SetError(@error, @extended, 0)&lt;br /&gt;
&lt;br /&gt;
	If Not _CommAPI_SetCommState($hFile, $tDCB) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
	If Not _CommAPI_SetCommTimeouts($hFile, $tCommTimeouts) Then Return SetError(@error, @extended, 0)&lt;br /&gt;
&lt;br /&gt;
	Return $hFile&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_OpenPort&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_ReceiveData&lt;br /&gt;
; Description ...: Receives data (RxD/RX/RD) to a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_ReceiveData(Const $hFile[, $iMinBufferSize = 1[, $iMaxWaitTime = 100]])&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
; Return values .: Success - Received string&lt;br /&gt;
;                  Failure - Empty string&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......: If the result contains Chr(0), you should convert the result with function Binary().&lt;br /&gt;
; Related .......: _CommAPI_TransmitData&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_ReceiveData(Const $hFile)&lt;br /&gt;
	Local $tBuffer = DllStructCreate(&amp;quot;char&amp;quot;)&lt;br /&gt;
	Local $iWritten = 0&lt;br /&gt;
	Local $sResult = &amp;quot;&amp;quot;&lt;br /&gt;
	Do&lt;br /&gt;
		_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 1, $iWritten)&lt;br /&gt;
		If @error Then Return SetError(@error, 0, $sResult)&lt;br /&gt;
		If $iWritten Then $sResult &amp;amp;= DllStructGetData($tBuffer, 1)&lt;br /&gt;
	Until Not $iWritten&lt;br /&gt;
	Return $sResult&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_ReceiveData&lt;br /&gt;
&lt;br /&gt;
; #FUNCTION# ====================================================================================================================&lt;br /&gt;
; Name ..........: _CommAPI_TransmitData&lt;br /&gt;
; Description ...: Transmits data (TxD/TX/TD) to a specified communications device.&lt;br /&gt;
; Syntax ........: _CommAPI_TransmitData(Const $hFile, Const $sData)&lt;br /&gt;
; Parameters ....: $hFile               - [in] A handle to the communications device.&lt;br /&gt;
;                  $sData               - [in] A string value to transmit.&lt;br /&gt;
; Return values .: Success - The number of bytes written.&lt;br /&gt;
;                  Failure - 0&lt;br /&gt;
; Author ........:&lt;br /&gt;
; Modified ......:&lt;br /&gt;
; Remarks .......:&lt;br /&gt;
; Related .......: _CommAPI_ReceiveData&lt;br /&gt;
; Link ..........:&lt;br /&gt;
; Example .......: No&lt;br /&gt;
; ===============================================================================================================================&lt;br /&gt;
Func _CommAPI_TransmitData(Const $hFile, Const $sData)&lt;br /&gt;
	Local $iWritten = 0&lt;br /&gt;
	Local $tBuffer = DllStructCreate(&amp;quot;byte[&amp;quot; &amp;amp; StringLen($sData) &amp;amp; &amp;quot;]&amp;quot;)&lt;br /&gt;
	DllStructSetData($tBuffer, 1, $sData)&lt;br /&gt;
	If @error Then Return SetError(@error)&lt;br /&gt;
	_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sData), $iWritten)&lt;br /&gt;
	If @error Then Return SetError(@error)&lt;br /&gt;
	Return $iWritten&lt;br /&gt;
EndFunc   ;==&amp;gt;_CommAPI_TransmitData&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Therealhanuta</name></author>
	</entry>
</feed>