polaski Posted April 20, 2015 Posted April 20, 2015 I`m doing school project about flowmeter connected to computer. The main idea is: Read DCD status from RS232(com1) port. If DCD = 1 than $myexample = $myexample + 1 endif Next> i will show "myexample" in msgbox. The problem is that i get no read from _CommGetLineStates(). #include 'CommMG.au3' ;Internal for the Serial UDF Global $sportSetError = '' ;COM Vars Global $CMPort = 1 ; Port Global $CmBoBaud = 9600 ; Baud Global $CmboDataBits = 8 ; Data Bits Global $CmBoParity = "none" ; Parity Global $CmBoStop = 1 ; Stop Global $setflow = 2 ; Flow ;Start up communication with the device ;$DTRMode 0 = turns on the DTR line when the port is opened and leaves it on ; 1 = enables DTR handshaking ; 2 = disables the DTR line when the device is opened and leaves it disabled. _CommSetPort($CMPort, $sportSetError, $CmBoBaud, $CmboDataBits, $CmBoParity, $CmBoStop, $setflow) _CommSetDTR(1) ;that work nice sleep(1000) _CommSetDTR(0) sleep(1000) _CommGetLineStates() >Exit code: 0 Time: 2.462 http://www.linuxfocus.org/English/January2001/article186.shtml <<using this setup. I`ve checked that i got read in REALTERM and green light on DCD(1) line when i push the button. My english is not realy poetic but i hope this Topic will help som1 understand "simple serial comunication".
polaski Posted April 21, 2015 Author Posted April 21, 2015 (edited) ;=================================================================================== ; ; Function Name: _CommGetLIneStates() ; Description: Gets the states of 4 signals ; Parameters: none ; Returns; on success ; returns an array with 4 elements giving the state of the lines CTS, DSR, Ring Indicator and DCD ; in that order. Value True = ON, value False = OFF ; on failure ; returns -1 and @error set to 1 ;==================================================================================== Func _CommGetLineStates() Local $vDllAns Local $iL, $aStates[4] If Not $fPortOpen Then SetError(1) Return -1 EndIf $vDllAns = DllCall($hDll, 'int', 'GetLineStates') If @error <> 0 Then SetError(1) Return -1 EndIf mgdebugCW($vDllAns[0] & @CRLF) For $iL = 0 To 3 $aStates[$iL] = BitAND($vDllAns[0], 2 ^ $iL) <> 0 Next Return $aStates EndFunc ;==>_CommGetLineStates How to get 4th element from $aStates? I realy want to see it. expandcollapse popup#include 'CommMG.au3' #include <Array.au3> ;Internal for the Serial UDF Global $sportSetError = '' Local $bStates[6] ;COM Vars Global $CMPort = 1 ; Port Global $CmBoBaud = 9600 ; Baud Global $CmboDataBits = 8 ; Data Bits Global $CmBoParity = "none" ; Parity Global $CmBoStop = 1 ; Stop Global $setflow = 2 ; Flow ;Start up communication with the device ;$DTRMode 0 = turns on the DTR line when the port is opened and leaves it on ; 1 = enables DTR handshaking ; 2 = disables the DTR line when the device is opened and leaves it disabled. _CommSetPort($CMPort, $sportSetError, $CmBoBaud, $CmboDataBits, $CmBoParity, $CmBoStop, $setflow) ;_CommSetDTR(1) ;that work nice ;sleep(100) ;_CommSetDTR(0) ;sleep(100) $bStates = _CommGetLineStates() ;MsgBox(0, "4", $aStates[4]) Local $tablica[3] = ["jeden", "dwa", "trzy"] ;_ArrayDisplay($tablica) _ArrayDisplay($bStates) Edited April 21, 2015 by polaski
polaski Posted April 21, 2015 Author Posted April 21, 2015 (edited) Now i need to know why it always show me False on DCD line. Its 4th position in $bStates array. Can som1 fix my this? Edited April 21, 2015 by polaski
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now