Develop and Download Open Source Software

Browse Subversion Repository

Diff of /branches/ttcomtester/teraterm/teraterm/commlib.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 10587 by zmatsuo, Mon Feb 6 13:26:12 2023 UTC revision 10593 by zmatsuo, Mon Feb 13 14:41:35 2023 UTC
# Line 125  BOOL TCPIPClosed = TRUE; Line 125  BOOL TCPIPClosed = TRUE;
125  static HANDLE PrnID = INVALID_HANDLE_VALUE;  static HANDLE PrnID = INVALID_HANDLE_VALUE;
126  static BOOL LPTFlag;  static BOOL LPTFlag;
127    
128    typedef struct {
129            BOOL AppCTSDSRFlow;
130            DWORD RecieveBufferSize;
131            DWORD SendBufferSize;
132            WORD XonLim;
133            WORD XoffLim;
134    } SerialParams_t;
135    static SerialParams_t SerialParams;
136    
137    static void SerialParamsInit(const wchar_t *ini)
138    {
139            const wchar_t *section = L"Serial.maniac";
140            SerialParams_t *p = &SerialParams;
141            p->AppCTSDSRFlow = (BOOL)GetPrivateProfileIntW(section, L"AppCTSDSRFlow", 1, ini);
142            p->RecieveBufferSize = (DWORD)GetPrivateProfileIntW(section, L"RecieveBufferSize", CommInQueSize, ini);
143            p->SendBufferSize = (DWORD)GetPrivateProfileIntW(section, L"SendBufferSize", CommOutQueSize, ini);
144            p->XonLim = (WORD)GetPrivateProfileIntW(section, L"XonLim", CommXonLim, ini);
145            p->XoffLim = (WORD)GetPrivateProfileIntW(section, L"XoffLim", CommXoffLim, ini);
146    }
147    
148  // Initialize ComVar.  // Initialize ComVar.
149  // This routine is called only once  // This routine is called only once
150  // by the initialization procedure of Tera Term.  // by the initialization procedure of Tera Term.
# Line 156  void CommResetSerial(PTTSet ts, PComVar Line 176  void CommResetSerial(PTTSet ts, PComVar
176                          return;                          return;
177          }          }
178    
179            SerialParamsInit(ts->SetupFNameW);
180    
181          ClearCommError(cv->ComID,&DErr,NULL);          ClearCommError(cv->ComID,&DErr,NULL);
182          SetupComm(cv->ComID,CommInQueSize,CommOutQueSize);          SetupComm(cv->ComID, SerialParams.RecieveBufferSize, SerialParams.SendBufferSize);
183          /* flush input and output buffers */          /* flush input and output buffers */
184          if (ClearBuff) {          if (ClearBuff) {
185                  PurgeComm(cv->ComID, PURGE_TXABORT | PURGE_RXABORT |                  PurgeComm(cv->ComID, PURGE_TXABORT | PURGE_RXABORT |
# Line 214  void CommResetSerial(PTTSet ts, PComVar Line 236  void CommResetSerial(PTTSet ts, PComVar
236                          dcb.XoffChar = XOFF;                          dcb.XoffChar = XOFF;
237                          dcb.fOutX = TRUE;                          dcb.fOutX = TRUE;
238                          dcb.fInX = TRUE;                          dcb.fInX = TRUE;
239                          dcb.XonLim = CommXonLim;                          dcb.XonLim = SerialParams.XonLim;
240                          dcb.XoffLim = CommXoffLim;                          dcb.XoffLim = SerialParams.XoffLim;
241                          break;                          break;
242                  case IdFlowHard:  // RTS/CTS                  case IdFlowHard:  // RTS/CTS
243                          dcb.fOutxCtsFlow = TRUE;                          dcb.fOutxCtsFlow = TRUE;
# Line 1076  void CommSend(PComVar cv) Line 1098  void CommSend(PComVar cv)
1098                          break;                          break;
1099                  case IdSerial:                  case IdSerial:
1100                          Max = 1;                          Max = 1;
1101                          if (cv->ts->Flow == IdFlowHard || cv->ts->Flow == IdFlowHardDsrDtr) {                          if (SerialParams.AppCTSDSRFlow &&
1102                                    ((cv->ts->Flow == IdFlowHard || cv->ts->Flow == IdFlowHardDsrDtr))) {
1103                                  // RTS/CTS, DSR/DTR                                  // RTS/CTS, DSR/DTR
1104                                  DWORD modem_state;                                  DWORD modem_state;
1105                                  GetCommModemStatus(cv->ComID, &modem_state);                                  GetCommModemStatus(cv->ComID, &modem_state);
1106                                  DWORD mask = cv->ts->Flow == IdFlowHard ? MS_CTS_ON : MS_DSR_ON;                                  const DWORD mask = cv->ts->Flow == IdFlowHard ? MS_CTS_ON : MS_DSR_ON;
1107                                  if ((modem_state & mask) == 0) {                                  if ((modem_state & mask) == 0) {
1108                                          // 信号線がアクティブではない、送信しない                                          // 信号線がアクティブではない、送信しない
1109                                          Max = 1;                                          Max = 0;
   
                                         DCB dcb;  
                                         GetCommState(cv->ComID, &dcb);  
                                         int a = 0;  
1110                                  }                                  }
1111                          }                          }
1112    

Legend:
Removed from v.10587  
changed lines
  Added in v.10593

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26