polaski Posted April 20, 2015 Share 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". Link to comment Share on other sites More sharing options...
polaski Posted April 21, 2015 Author Share 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 Link to comment Share on other sites More sharing options...
polaski Posted April 21, 2015 Author Share 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 Link to comment Share on other sites More sharing options...
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