Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 720
  • Last Modified:

baudrate 76800

I need to interface with an electronic card that works at 76800 baud. I thought it was easy, but I found this speed is not standard. Can I set this speed ???
0
gianluca
Asked:
gianluca
  • 6
  • 5
1 Solution
 
mokuleCommented:
Try this

     m_hPort := CreateFile(PChar(sP),
                        GENERIC_READ or GENERIC_WRITE,
                        0, nil,
                  OPEN_EXISTING,
                        FILE_ATTRIBUTE_NORMAL,
                         LongInt(0));
     if m_hPort = INVALID_HANDLE_VALUE then
       begin
// error create
       end
     else
       begin
       if GetCommState(m_hPort, dcbPort) then
           begin
                 { fill in the fields of the structure }
           dcbPort.BaudRate := 76800;
           dcbPort.ByteSize := 8;  // or ...
           dcbPort.Parity := NOPARITY;
          dcbPort.StopBits := ONESTOPBIT;
         dcbPort.Flags := 0;
            { flag bit fields:
            dcb_Binary, dcb_Parity, dcb_OutxCtsFlow, dcb_fOutxDsrFlow,
            dcb_fOutX, dcb_fInX, dcb_DtrFlow, dcb_RtsFlow
            }
         SetCommState(m_hPort, dcbPort);
0
 
gianlucaAuthor Commented:
I try this way :

dcbPort.BaudRate := 76800;

but the actual baudrate sending out from port is 2.2 Kbaud
0
 
mokuleCommented:
I remember that long ago the divider for baud rate 38400 was 3.
Achieving 76800 was then impossible.
I've had little hope that maybe something was changed. :(
0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
gianlucaAuthor Commented:
yes you're right. the divider is 2 for 57600 and 1 for 115200.
But looking at CBR_xx constant, there is also a CBR_128000 and CBR_256000,

how is it possible ???
0
 
mokuleCommented:
I've just look at the same. Also CBR_56000.
Maybe try CBR_57600 and then CBR_56000 and watch what is going on?
0
 
gianlucaAuthor Commented:
today I can not test what happen when I set speed to CBR_56000, I will do tomorrow in office. Do you have another suggestion ?

PS : I already try CBR_57600 and CBR_115200 and it's OK. I've measured the bitlength using a digital oscilloscope and the timing is correct.
0
 
mokuleCommented:
I've tested function
    SetCommState(m_hPort, dcbPort);
giving
  dcbPort.BaudRate
from 100 to 256000 with step 100
For baud rates listed below the result is OK for other there is error 87 - invalid parameter and the value of baud rate remains such as last succesfull setting.


100 : OK
Each from this range OK
9600 : OK

10400 : OK

11500 : OK

12700 : OK
12800 : OK

14300 : OK
14400 : OK

16300 : OK
16400 : OK

19100 : OK
19200 : OK

22900 : OK
23000 : OK

28600 : OK
28700 : OK
28800 : OK

38100 : OK
38200 : OK
38300 : OK
38400 : OK

56000 : OK

57100 : OK
57200 : OK
57300 : OK
57400 : OK
57500 : OK
57600 : OK

114100 : OK
114200 : OK
114300 : OK
114400 : OK
114500 : OK
114600 : OK
114700 : OK
114800 : OK
114900 : OK
115000 : OK
115100 : OK
115200 : OK

128000 : 87
256000 : 87
0
 
gianlucaAuthor Commented:
How about 76800 ??? is it OK ???
0
 
gianlucaAuthor Commented:
You mean others from your list are not OK, right ???
0
 
mokuleCommented:
They are not OK.
I'm afraid the only solution is special card something like this

http://www.brainboxes.com/downloads/manuals/serial/MANUAL_CC-279-275_PCI_8_PORT_LYNX_RS232_9-25PIN.pdf
0
 
gianlucaAuthor Commented:
Yes I think so. Thanks a lot.
0

Featured Post

What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

  • 6
  • 5
Tackle projects and never again get stuck behind a technical roadblock.
Join Now