0

私は問題なく動作するこのコードを持っています:

' Declare the local variables that you will use in the code.
Dim hSerialPort, hParallelPort As IntPtr
Dim Success As Boolean
Dim MyDCB As DCB
Dim MyCommTimeouts As COMMTIMEOUTS
Dim BytesWritten, BytesRead As Int32
Dim Buffer() As Byte


        hSerialPort = CreateFile("COM1", GENERIC_READ Or GENERIC_WRITE, 0, IntPtr.Zero, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, IntPtr.Zero)

' Retrieve the current control settings.
     Success = GetCommState(hSerialPort, MyDCB)

     MyDCB.BaudRate = 9600
     MyDCB.ByteSize = 8
     MyDCB.Parity = NOPARITY
     MyDCB.StopBits = ONESTOPBIT

' Reconfigure COM1 based on the properties of the modified DCB structure.
     Success = SetCommState(hSerialPort, MyDCB)

     '     

ハードウェア制御フラックスを設定する必要があります

どうすればできますか?

ありがとうございました !!

4

2 に答える 2

0

RTS/CTS ベースのフロー制御について言及していると思います。これにはいくつかの DCB パラメータがあります。fOutxCtsFlow、fOutxDsrFlow、fRtsControl、fDtrControl に加えて、ソフトウェアベースのフロー制御 fInX、fOutX です。

これらすべての設定を適切に組み合わせた場合のみ、意図したとおりに機能します。私たちのソフトウェアには 4 つの異なるオプションがあり、これがコードが関連する DCB 値を設定する方法です。

通常、設定します(C ++で)

   DCBptr->fOutxDsrFlow = 0;
   DCBptr->fDtrControl = DTR_CONTROL_ENABLE;

次に、フロー制御を使用するかどうか、およびどのフロー制御を使用するかを決定します。

 // Flow control settings
  switch(flowControl)
   {case 1:  // HW flow control
      DCBptr->fOutxCtsFlow = 1;
      DCBptr->fRtsControl = RTS_CONTROL_HANDSHAKE;
      DCBptr->fInX = 0;
      DCBptr->fOutX = 0;
      break;
    case 2: // SW (XON/XOFF) flow control
      DCBptr->fOutxCtsFlow = 0;
      DCBptr->fRtsControl = RTS_CONTROL_DISABLE;
      DCBptr->fInX = 1;
      DCBptr->fOutX = 1;
      break;
    case 3: // RTS On Send (RS485 Transceiver Mode) 
      DCBptr->fOutxCtsFlow = 0;
      DCBptr->fRtsControl = RTS_CONTROL_TOGGLE;
      DCBptr->fInX = 0;
      DCBptr->fOutX = 0;
      break;
    default: // no flow control
      DCBptr->fOutxCtsFlow = 0;
      DCBptr->fRtsControl = RTS_CONTROL_DISABLE;
      DCBptr->fInX = 0;
      DCBptr->fOutX = 0;
      break;
   }

これが役に立てば幸いです、オリバー

于 2013-09-17T07:45:35.343 に答える
0

SerialPort.Handshake プロパティを介してフロー制御を設定できます。また、プロパティ DTREnable、RTSEnable、DSRHolding、および CTSHolding を使用して、ハードウェアに直接アクセスすることもできます。

于 2013-09-10T22:29:43.833 に答える