| 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. |
| 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 | |
| 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; |
| 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 |
|
|