Difference between revisions of "Component: USB Serial (Comms: USB)"
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | + | {| style="width:50%" | |
− | |||
− | {| | ||
|- | |- | ||
− | | width="20%" style="color: gray;" | Author | + | | width="20%" style="color:gray;" | Author |
| Matrix Ltd. | | Matrix Ltd. | ||
|- | |- | ||
− | | width="20%" style="color: gray;" | Version | + | | width="20%" style="color:gray;" | Version |
− | | 1.6 | + | | 1.6 |
|- | |- | ||
− | | width="20%" style="color: gray;" | Category | + | | width="20%" style="color:gray;" | Category |
| Comms: USB | | Comms: USB | ||
|} | |} | ||
+ | ==USB Serial component== | ||
+ | Component to create and communicate using a standard CDC type COM port. Compatible with simulation and USB enabled microcontroller devices PIC/dsPIC/AVR. | ||
− | == | + | ==Component Pack== |
− | |||
− | |||
− | + | COMMSC | |
− | |||
+ | ==Detailed description== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ''No detailed description exists yet for this component'' | |
+ | ==Examples== | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | The PIC based ECIOs or MIAC are good targets for USB as they do not have any additional configuration setting that need to be setup to allow the firmware to run correctly. For other targets you will have to setup the configuration correctly for your hardware to allow the USB to run correctly. | ||
− | |||
− | + | Here is an example file which waits for incoming data and then when valid data is received it displays this as a binary value onto the PortB pins before echoing back the data. | |
+ | {{Fcfile|USB_Serial.fcfx|USB Serial Simple Receive}} | ||
+ | The example requires a device driver to function correctly. The driver can be generated by selecting the USB Serial component on the System panel, Looking down the list of properties in the properties window, selecting the Generate Driver property and switching the setting to Yes. This will place the driver file into the same directory as the Flowcode fcfx project file is located. | ||
− | + | Here is a signed version of the USB Serial device driver using the default VID/PID properties. | |
− | |||
− | + | {{Zip|USBSerial_Driver.zip|USB Serial Driver}} | |
− | |||
− | |||
+ | Here is an example file which is designed to run in simulation to communicate with the connected embedded device. The COM port property will have to match the COM port for the embedded device to allow the communications to work correctly. Alternatively a program like Hyperterminal or RealTerm can be used to generate the COM port data to send to the connected device. | ||
+ | {{Fcfile|USB_Serial_Sim.fcfx|USB Serial Simulation}} | ||
+ | Finding which COM port has been allocated to your embedded device is as easy as opening the Windows device manager and looking under Ports. | ||
− | + | [[File:DeviceManager.jpg]] | |
− | |||
+ | Assigning the correct COM port in the simulation needs to be done to allow the communications to work correctly. | ||
− | + | [[File:SerialProps.jpg]] | |
− | |||
− | |||
− | + | Example of the data console with data being passed back and forth between the simulation and the embedded device. | |
− | |||
+ | [[File:SerialComms.jpg]] | ||
− | + | ==Downloadable macro reference== | |
− | :[[ | + | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendString''' | ||
+ | |- | ||
+ | | colspan="2" | Sends the specified data string to the host | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" | Data | ||
+ | |- | ||
+ | | colspan="2" | Data string to send to the host | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
− | === | + | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |
− | + | |- | |
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendNumber''' | ||
+ | |- | ||
+ | | colspan="2" | Sends the specified numeric value as an ASCII string to the host. | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-s16-icon.png]] - INT | ||
+ | | width="90%" | Number | ||
+ | |- | ||
+ | | colspan="2" | Range -32768 to 32767 | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
− | |||
− | ''' | + | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadString''' | ||
+ | |- | ||
+ | | colspan="2" | Retreives a string from the incoming data buffer. If data is available then the macro will return straight away. If there is no data available then the macro waits up the the period specified by the timeout before returning the value 255. | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Timeout_ms | ||
+ | |- | ||
+ | | colspan="2" | Length of time to wait before timing out | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Length | ||
+ | |- | ||
+ | | colspan="2" | Maximum number of bytes to try and read | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-string-icon.png]] - STRING | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
− | |||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendByte''' | ||
+ | |- | ||
+ | | colspan="2" | Sends the specified data byte to the host | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | data | ||
+ | |- | ||
+ | | colspan="2" | Data byte to send to the host | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
− | |||
− | :[[ | + | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''SendByteArray''' | ||
+ | |- | ||
+ | | colspan="2" | Sends the specified data array to the host | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Data | ||
+ | |- | ||
+ | | colspan="2" | Data array to send to the host | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | NumBytes | ||
+ | |- | ||
+ | | colspan="2" | Max bytes is set by the Transmit Buffer Size property | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
+ | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | ||
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''ReadByte''' | ||
+ | |- | ||
+ | | colspan="2" | Retreives the byte from the incoming data buffer. If data is available then the macro will return straight away. If there is no data available then the macro waits up the the period specified by the timeout before returning the value 255. | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" | Timeout_ms | ||
+ | |- | ||
+ | | colspan="2" | Number of milliseconds to wait before timing out | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u16-icon.png]] - UINT | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
− | |||
− | '' | + | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" |
+ | |- | ||
+ | | width="10%" align="center" style="background-color:#D8C9D8;" align="center" | [[File:Fc9-comp-macro.png]] | ||
+ | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Initialise''' | ||
+ | |- | ||
+ | | colspan="2" | Starts up the USB communications and attempts to enumerate. Returns 0 for a successful startup or 255 for a enumeration timeout. | ||
+ | |- | ||
+ | |- | ||
+ | | width="10%" align="center" style="border-top: 2px solid #000;" | [[File:Fc9-u8-icon.png]] - BYTE | ||
+ | | width="90%" style="border-top: 2px solid #000;" | ''Return'' | ||
+ | |} | ||
− | |||
− | |||
− | |||
− | + | ==Property reference== | |
− | + | {| class="wikitable" style="width:60%; background-color:#FFFFFF;" | |
− | + | |- | |
− | + | | width="10%" align="center" style="background-color:#D8C9D8;" | [[File:Fc9-prop-icon.png]] | |
− | + | | width="90%" style="background-color:#D8C9D8; color:#4B008D;" | '''Properties''' | |
− | + | |- | |
− | + | |- | |
− | + | | width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]] | |
− | + | | width="90%" style="background-color:#EAE1EA; color:#4B008D;" | USB Properties | |
− | + | |- | |
− | + | |- | |
− | USB Device Name | + | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] |
− | + | | width="90%" | Vendor ID | |
− | + | |- | |
− | + | | colspan="2" | USB VID | |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] | |
− | USB Manufacturer | + | | width="90%" | Product ID |
− | + | |- | |
− | + | | colspan="2" | USB PID | |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-10-icon.png]] | |
− | + | | width="90%" | Device Name | |
− | USB Major Version Number | + | |- |
− | + | | colspan="2" | USB Device Name | |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-10-icon.png]] | |
− | + | | width="90%" | Manufacturer | |
− | + | |- | |
− | USB Minor Version Number | + | | colspan="2" | USB Manufacturer |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-14-icon.png]] | |
− | + | | width="90%" | Major Version | |
− | + | |- | |
− | + | | colspan="2" | USB Major Version Number | |
− | Specifies the way the receive function indicates a timeout. | + | |- |
− | + | | width="10%" align="center" | [[File:Fc9-type-14-icon.png]] | |
− | 8 Bit mode - Timeout is represented by the value 255. | + | | width="90%" | Minor Version |
− | + | |- | |
− | 16 Bit mode - Timeout is represented by the value 512 allowing the value 255 to represent valid data | + | | colspan="2" | USB Minor Version Number |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-16-icon.png]] | |
− | + | | width="90%" | Return Type | |
− | + | |- | |
− | + | | colspan="2" | Specifies the way the receive function indicates a timeout. 8 Bit mode - Timeout is represented by the value 255. 16 Bit mode - Timeout is represented by the value 512 allowing the value 255 to represent valid data | |
− | Specifies if the enumeration (Initialise function) can timeout if taking too long. | + | |- |
− | + | | width="10%" align="center" | [[File:Fc9-type-7-icon.png]] | |
− | + | | width="90%" | Enumeration Timeout | |
− | + | |- | |
− | + | | colspan="2" | Specifies if the enumeration (Initialise function) can timeout if taking too long. | |
− | + | |- | |
− | Sets the size of the transmit buffer. | + | | width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]] |
− | + | | width="90%" style="background-color:#EAE1EA; color:#4B008D;" | RAM Usage | |
− | Recommended to be between 8 and 64 bytes. | + | |- |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] | |
− | + | | width="90%" | Transmit Buffer Size | |
− | + | |- | |
− | + | | colspan="2" | Sets the size of the transmit buffer. Recommended to be between 8 and 64 bytes. | |
− | Sets the size of the receive buffer. | + | |- |
− | + | | width="10%" align="center" | [[File:Fc9-type-21-icon.png]] | |
− | Recommended to be between 8 and 64 bytes. | + | | width="90%" | Receive Buffer Size |
− | + | |- | |
− | + | | colspan="2" | Sets the size of the receive buffer. Recommended to be between 8 and 64 bytes. | |
− | + | |- | |
− | + | | width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]] | |
− | + | | width="90%" style="background-color:#EAE1EA; color:#4B008D;" | USB Driver | |
− | Directory to save the generated device driver .inf file | + | |- |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-20-icon.png]] | |
− | + | | width="90%" | Driver Directory | |
− | + | |- | |
− | + | | colspan="2" | Directory to save the generated device driver .inf file | |
− | Filename to give to the generated driver file. | + | |- |
− | + | | width="10%" align="center" | [[File:Fc9-type-10-icon.png]] | |
− | + | | width="90%" | Driver Filename | |
− | + | |- | |
− | + | | colspan="2" | Filename to give to the generated driver file. | |
− | + | |- | |
− | Generates a driver file when set to Yes, Automatically jumps back to No when complete. | + | | width="10%" align="center" | [[File:Fc9-type-7-icon.png]] |
− | + | | width="90%" | Generate Driver | |
− | + | |- | |
− | + | | colspan="2" | Generates a driver file when set to Yes, Automatically jumps back to No when complete. | |
− | + | |- | |
− | + | | width="10%" align="center" style="background-color:#EAE1EA;" | [[File:Fc9-conn-icon.png]] | |
− | Hardware COM port to communicate with any connected USB serial devices or any other virtual COM ports. | + | | width="90%" style="background-color:#EAE1EA; color:#4B008D;" | Simulation |
− | + | |- | |
− | + | |- | |
− | + | | width="10%" align="center" | [[File:Fc9-type-12-icon.png]] | |
− | + | | width="90%" | COM Port | |
− | + | |- | |
− | Text displayed on the I/O flasher comms component. | + | | colspan="2" | Hardware COM port to communicate with any connected USB serial devices or any other virtual COM ports. |
+ | |- | ||
+ | | width="10%" align="center" | [[File:Fc9-type-10-icon.png]] | ||
+ | | width="90%" | Label | ||
+ | |- | ||
+ | | colspan="2" | Text displayed on the I/O flasher comms component. | ||
+ | |} |
Latest revision as of 17:24, 9 November 2022
Author | Matrix Ltd. |
Version | 1.6 |
Category | Comms: USB |
Contents
USB Serial component
Component to create and communicate using a standard CDC type COM port. Compatible with simulation and USB enabled microcontroller devices PIC/dsPIC/AVR.
Component Pack
COMMSC
Detailed description
No detailed description exists yet for this component
Examples
The PIC based ECIOs or MIAC are good targets for USB as they do not have any additional configuration setting that need to be setup to allow the firmware to run correctly. For other targets you will have to setup the configuration correctly for your hardware to allow the USB to run correctly.
Here is an example file which waits for incoming data and then when valid data is received it displays this as a binary value onto the PortB pins before echoing back the data.
USB Serial Simple Receive
The example requires a device driver to function correctly. The driver can be generated by selecting the USB Serial component on the System panel, Looking down the list of properties in the properties window, selecting the Generate Driver property and switching the setting to Yes. This will place the driver file into the same directory as the Flowcode fcfx project file is located.
Here is a signed version of the USB Serial device driver using the default VID/PID properties.
Here is an example file which is designed to run in simulation to communicate with the connected embedded device. The COM port property will have to match the COM port for the embedded device to allow the communications to work correctly. Alternatively a program like Hyperterminal or RealTerm can be used to generate the COM port data to send to the connected device.
USB Serial Simulation
Finding which COM port has been allocated to your embedded device is as easy as opening the Windows device manager and looking under Ports.
Assigning the correct COM port in the simulation needs to be done to allow the communications to work correctly.
Example of the data console with data being passed back and forth between the simulation and the embedded device.
Downloadable macro reference
![]() |
SendString |
Sends the specified data string to the host | |
![]() |
Data |
Data string to send to the host | |
![]() |
Return |
![]() |
SendNumber |
Sends the specified numeric value as an ASCII string to the host. | |
![]() |
Number |
Range -32768 to 32767 | |
![]() |
Return |
![]() |
SendByte |
Sends the specified data byte to the host | |
![]() |
data |
Data byte to send to the host | |
![]() |
Return |
![]() |
SendByteArray |
Sends the specified data array to the host | |
![]() |
Data |
Data array to send to the host | |
![]() |
NumBytes |
Max bytes is set by the Transmit Buffer Size property | |
![]() |
Return |
![]() |
Initialise |
Starts up the USB communications and attempts to enumerate. Returns 0 for a successful startup or 255 for a enumeration timeout. | |
![]() |
Return |