Sign up on the Revelation Software website to have access to the most current content, and to be able to ask questions and get answers from the Revelation community

At 25 MAY 1998 12:38:01PM Duane Pekse wrote:

I need to read the current status of a com port. I seem to remember seeing it in the manual once, but I can't find it now. I'm sure it's possible. Can anyone help me?

Duane Pekse, Developer

Aldata Software


At 28 MAY 1998 04:12AM Colin Rule (CSSP) wrote:

I don't know if the following code is of use.

We use it to communicate with a digitiser tablet.

There are many other procedures also, but this one may have what you need.

Sorry about the wrapping, Revtech should make the edit box resizable.

COMPILE SUBROUTINE COMM_ACCESS(MODE,COMM_PORT_HANDLE,COMMDATA)

* STANDARD

* Open/Close Comm port, Read/Write to port

* AG - May 96

*

DECLARE FUNCTION BLANK_STRUCT,GET_PROPERTY,STRUCT_TO_VAR,VAR_TO_STRUCT
DECLARE FUNCTION OpenComm,CloseComm,BuildCommDCB,SetCommState,ReadComm,WriteComm
BEGIN CASE
	CASE MODE=OPEN"	;GOSUB OPEN_PORT
	CASE MODE=CLOSE"	;GOSUB CLOSE_PORT
	CASE MODE=READ"	;GOSUB READ_FROM_PORT
	CASE MODE=WRITE"	;GOSUB WRITE_TO_PORT
END CASE

RETURN

OPEN_PORT:

COMM_ERRORS="
COMM_ERRORS=-1 ;COMM_ERRORS=Invalid or unsupported device"
COMM_ERRORS=-2 ;COMM_ERRORS=Device already in use"
COMM_ERRORS=-10;COMM_ERRORS=Device already in use"
COMM_ERRORS=-12;COMM_ERRORS=Device baud rate is invalid"

*

PORT	 =COMMDATA
BAUD_RATE=COMMDATA
DATA_BITS=COMMDATA
STOP_BITS=COMMDATA
PARITY	 =COMMDATA1,1
FLOW_CONTROL=COMMDATA1,1
PORT_SETTINGS=PORT:":":BAUD_RATE:",":PARITY:",":DATA_BITS:",":STOP_BITS:\00\
PORT=PORT:\00\
INQSIZE=1024;OUTQSIZE=128
COMM_PORT_HANDLE=OpenComm(PORT,INQSIZE,OUTQSIZE)
LOCATE COMM_PORT_HANDLE IN COMM_ERRORS USING @VM SETTING POS THEN
	COMM_PORT_HANDLE=COMM_ERRORS
	RETURN
END

*

DCB_STRUCT=BLANK_STRUCT("DCB")
RETVAL=BuildCommDCB(PORT_SETTINGS,DCB_STRUCT)
COMM_PARAMS=STRUCT_TO_VAR(DCB_STRUCT,"DCB")
BEGIN CASE
	CASE FLOW_CONTROL=X"
		COMM_PARAMS=3
	CASE FLOW_CONTROL=H"
		COMM_PARAMS=5
		COMM_PARAMS=9
		COMM_PARAMS=64
END CASE
DCB_STRUCT=VAR_TO_STRUCT(COMM_PARAMS,"DCB")
RETVAL=SetCommState(DCB_STRUCT)

RETURN

CLOSE_PORT:

RETVAL=CloseComm(COMM_PORT_HANDLE)

RETURN

READ_FROM_PORT:

BUFF_LEN=50
COMMDATA=STR(\00\,BUFF_LEN)
RETVAL=ReadComm(COMM_PORT_HANDLE,COMMDATA,BUFF_LEN)
COMMDATA=FIELD(COMMDATA,\00\,1)

RETURN

WRITE_TO_PORT:

COMMDATA=COMMDATA:\00\
BUFF_LEN=LEN(COMMDATA)	
RETVAL=WriteComm(COMM_PORT_HANDLE,COMMDATA,BUFF_LEN)

RETURN


At 28 MAY 1998 04:50PM Duane Pekse wrote:

Thanks for the help. I have just one more question for you. Where did you find the OpenComm, CloseComm, etc Functions? Are they from a DLL, or are they part of OI? I couldn't find anything on them in the help file for OI, so I don't even have the prototype information.

Thanks again.

Duane

Aldata Software


At 29 MAY 1998 05:03AM Colin Rule wrote:

Sorry, forgot this.

It is a link to a DLL, all a bit tricky though.

I get my programmers to do this for me.

Hope this helps

Code below:

USER

*

* CSSP Functions Below

*

SHORT PASCAL OpenComm(LPCHAR,USHORT,USHORT)

SHORT PASCAL CloseComm(SHORT)

USHORT PASCAL EnableCommNotification(SHORT,USHORT,SHORT,SHORT)

SHORT PASCAL BuildCommDCB(LPCHAR,LPCHAR)

SHORT PASCAL GetCommState(SHORT,LPCHAR)

SHORT PASCAL SetCommState(LPCHAR)

SHORT PASCAL ReadComm(SHORT,LPCHAR,SHORT)

SHORT PASCAL WriteComm(SHORT,LPCHAR,SHORT)


At 01 JUN 1998 11:27AM Duane Pekse wrote:

Thanks a million for the info.

I think I've got it now.

         Duane

At 15 JUL 1998 02:19PM Mike Hyslop wrote:

Colin,

Mike Hyslop here. I'm one of Duane Pekse's co-workers. A couple of months ago, you and he conducted an exchange of information concerning using OI to read and write to a com port.

The project has since fallen into my hands. I have been attempting to use the code segment you sent Duane, but I am missing a key element. I need to see what an actual call to the COMM_ACCESS subroutine looks like.

Specifically, what the COMMDATA argument looks like. Would yo be so kind as to send an example of a call to this subroutine, with the arguments included.

Thanks, in advance.

Best Regards,

Mike Hyslop, P.Eng.

Aldata Software Mgt. Inc.

email:[email protected]

View this thread on the forum...

  • third_party_content/community/commentary/forums_nonworks/b4a1249c06f7a6318525660f005b5f1b.txt
  • Last modified: 2023/12/28 07:40
  • by 127.0.0.1