Baud rate limits in software and serial communication with an external device

☆樱花仙子☆ 提交于 2019-12-12 16:42:58

问题


I am using a USB port port operating as a virtual COM port to achieve serial communication with an external device using MATLAB or Visual Basic 6. I am facing baud rate limitations depending on the software I use to communicate with the device. MATLAB (2018a) has no problems because it can set high baud rates. Visual Basic 6 on the other hand faces limitations on the baud rates that can be set in the software. In terms of solutions, I have looked into this to set a higher baud rate in Visual Basic 6: https://www.mev.co.uk/pages/Support/VB-Baud.html

The drivers for the virtual COM port are made by FTDI and can be found here: http://www.ftdichip.com/Drivers/VCP.htm . After configuration in the Device Manger, the device I am communicating with appears under 'Ports (COM & LPT)' as 'USB Serial Port (COM4)' in the Device Manager.

The device requires a baud rate of 1000000 and 2 stop bits for successful communication (if you need any more information, please let me know). As far as I am aware, the baud rate set in the software to communicate via the serial port has to be 1000000 to match that of the external device I am using. I think my problem might require a bit an explanation of how serial communication works when a USB port is acting as a virtual COM port because I worry that it differs from communication using a 'real' serial port, if possible. The FTDI driver appears to be very flexible so I do not understand why Visual Basic cannot tap into this flexibility. Is it impossible to set a baud rate of 1000000 in Visual Basic 6? If it is impossible, are there any methods to overcome this limitation?

The VB6 code for baud rate setting is found below, where 'Port' is the address of COM port e.g. COM4, COM3:

MainForm.MSComm1.CommPort = Port
MainForm.MSComm1.Settings = "9600,N,8,1"

If anyone can help me understand how serial communication works in this setting and if I can overcome the constraints of Visual Basic 6, I would be very grateful.


回答1:


It seems that you are using MSComm32.ocx, not VB6 directly.
The maximum speed you can set for this is 256,000 bps.

How to send to the serial port by using Mscomm32.ocx

The following baud rate values are valid: 110, 300, 600, 1200, 2400, 4800, 9600 (default), 14400, 19200, 28800, 38400, 56000, 57600, 115200, 128000, 256000.

If you want more speed, please use Win32 API directly with the following library etc.

Serial port programming VB6 via Win32 API

Serial Port Communication

Serial port programming on Visual Basic with Windows API

grricks/vb6SerialAPI


Or, can it be used if the library provided by FTDI is defined by Declare Function like the above library?

D2XX Programmer's Guide

6.9 FT_W32_SetCommState
Example

FT_HANDLE ftHandle; // setup by FT_W32_CreateFile 
FTDCB ftDCB; 

if (FT_W32_GetCommState(ftHandle,&ftDCB)) {
    // FT_W32_GetCommState ok, device state is in ftDCB
    ftDCB.BaudRate = 921600; // Change the baud rate
    if (FT_W32_SetCommState(ftHandle,&ftDCB))
        ; // FT_W32_SetCommState ok 
    else
        ; // FT_W32_SetCommState failed
}
else
    ; // FT_W32_GetCommState failed


来源:https://stackoverflow.com/questions/55950692/baud-rate-limits-in-software-and-serial-communication-with-an-external-device

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!