Differences between revisions 3 and 4
Revision 3 as of 2015-12-30 13:50:49
Size: 3456
Comment: Under construction
Revision 4 as of 2016-01-08 02:14:35
Size: 3386
Comment: Version 1.0
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
|| UNDER CONSTRUCTION ||
Line 8: Line 7:
=== Instantiating the class === === Instantiating the class: ===
Line 13: Line 12:
To `Open` a port you need to specify the port number, baud rate, data bits, parity and stop bits. In the class you can specify the buffer size, the port time-out, the last byte time-out, the switching delay and the flow control as fields (see their individual comments in the class for more information). To `Open` a port you need to specify the ''port number'', ''baud rate'', ''data bits'', ''parity'' and ''stop bits''. In the class you can specify the ''buffer size'', the ''port time-out'', the ''last byte time-out'', the ''switching delay'' and the ''flow control'' as fields (see their individual comments in the class for more information).
Line 27: Line 26:
The method `Send` is used to send the data as numbers from 0 to 255 (bytes). By default, to detect the last byte received, the method will wait until the value of `_LastCharacTimeOut` as time-out. If a positive number (lastByte) is specified as left argument, the method will return as soon as this byte is received. Alternatively a negative number can be specified as left argument (qtyBytes) and the method will return as soon as this quantity of bytes as been received. Those 2 previous options will make the communication much faster when they are used. To convert characters to bytes (and vice-versa) use `⎕UCS` to do the conversion. The method `Send` is used to send the data as numbers from 0 to 255 (bytes). By default, to detect the last byte received, the method will wait until the value of `_LastCharacTimeOut` as time-out. If a positive number (lastByte) is specified as left argument, the method will return as soon as this byte is received. Alternatively a negative number can be specified as left argument (qtyBytes) and the method will return as soon as this quantity of bytes as been received. Those 2 previous options will make the communication much faster when they are used.
Line 54: Line 53:
 Version 1.0 December 2016, Pierre Gilbert  Version 1.0 January 2016, Pierre Gilbert

COM

Overview

COM is a Dyalog cover class for Asynchronous Serial Communication using the .Net SerialPort object. It is using the methods WriteAsync and ReadAsync available with .Net 4.5 for asynchronous communication that will not block the calling thread during the communication process. It is typically used for home automation, data acquisition and process control.

Typical Usage

Instantiating the class:

      com ← ⎕NEW COM

Opening a Port

To Open a port you need to specify the port number, baud rate, data bits, parity and stop bits. In the class you can specify the buffer size, the port time-out, the last byte time-out, the switching delay and the flow control as fields (see their individual comments in the class for more information).

      r ← com.Open(PortNo BaudRate DataBits Parity StopBits)

     ⍝ PortNo   = Communication Port Number (ex.: 1, 2, 3, 4, etc.)
     ⍝ BaudRate = Baud Rate (300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 76800, 115200)
     ⍝ DataBits = Number of Data Bits (4, 5, 6, 7, 8)
     ⍝ Parity   = Number for Parity (0 = None, 1 = Odd, 2 = Even, 3 = Mark, 4 = Space)
     ⍝ StopBits = Number of Stop Bits (1, 1.5, 2)

     ⍝ r[1] = 1 for Success, 0 for Failure
     ⍝ r[2] = Literal Error if Failure

Sending the Data

The method Send is used to send the data as numbers from 0 to 255 (bytes). By default, to detect the last byte received, the method will wait until the value of _LastCharacTimeOut as time-out. If a positive number (lastByte) is specified as left argument, the method will return as soon as this byte is received. Alternatively a negative number can be specified as left argument (qtyBytes) and the method will return as soon as this quantity of bytes as been received. Those 2 previous options will make the communication much faster when they are used.

     r ←          com.Send bytes  ⍝ bytes = numbers from 0 to 255
     r ← lastByte com.Send bytes  ⍝ lastByte = positive number
     r ← qtyBytes com.Send bytes  ⍝ qtyBytes = negative number

     ⍝ r[1] = 1 for Success, 0 for Failure
     ⍝ r[2] = Response if Success, Literal Error if Failure

Closing the Port

The method Close is used to close the port. The best practice for any application is to wait for some amount of time after calling the Close method before attempting to call the Open method, as the port may not be closed instantly.

     r ← com.Close

     ⍝ r[1] = 1 for Success, 0 for Failure
     ⍝ r[2] = Literal Error if Failure

How to install COM in your workspace

  1. Download COM.v1.0.txt

  2. Do a Select all (Ctrl+A) and a copy (Ctrl+C).
  3. In your workspace execute )ed ○ COM

  4. Paste (Ctrl+V) the text into the Dyalog editor
  5. Press Escape and ')save' your workspace

Version Information

 Version 1.0 January 2016, Pierre Gilbert

Original author:

Pierre Gilbert

Responsible:

PierreGilbert

Email:

<apgil AT SPAMFREE videotron DOT ca>


CategoryDyalog - CategoryDyalogDotNet - CategoryDotNet

netCOM (last edited 2016-01-08 14:23:57 by PierreGilbert)