Я пытаюсь прочитать строку с какого-то оборудования. и получить цифры в Int. так что это может быть использовано. строка, которая в настоящее время входит, является "a01y2345z". первые цифры - это канал, а последние четыре - это значение.
stringstream Channel_ss;
stringstream Data_ss;
SetCommMask(handle, EV_RXCHAR);
DWORD dwEventMask;
WaitCommEvent(handle, &dwEventMask, NULL);
char TempChar;
char SerialBuffer[512];
DWORD NoBytesRead;
for (int i = 0; i < 13; i++) {
ReadFile(handle, &TempChar, sizeof(TempChar), &NoBytesRead, NULL);
SerialBuffer[i] = TempChar;
if (SerialBuffer[0] == 'a') {
for (int j = 0; j < 13; j++) {
if (isdigit(SerialBuffer[j])) {
Channel_ss.put(SerialBuffer[j]);
if (j == 2) {
Chan = stoi(Channel_ss.str());
Channel_ss.str(string());
}
}
}
if (SerialBuffer[3] == Secondc) {
for (int k = 0; k < 4; k++) {
if (isdigit(SerialBuffer[k])) {
Data_ss.put(SerialBuffer[k]);
if (k == 4) {
Val[&Chan] = stoi(Data_ss.str());
Data_ss.str(string());
}
}
}
}
}
string PrintChan = to_string(Chan);
string PrintVal = to_string(Val[&Chan]);
cout << "Channel : " << PrintChan << " Value : " << PrintVal << endl;
}
Я пытаюсь вывести его на экран. Канал: 01 Значение: 2345, и текущий результат:
CreateFileA -> Успешно выполнен GetCommState -> Успешновыполнено SetCommState -> успешно выполнено SetCommTimeouts -> успешно выполнено Канал: 0 Значение: 0 Канал: 0 Значение: 0 Канал: 4 Значение: 4 Канал: 4 Значение: 4 Канал: 4 Значение: 4 Канал: 4 Значение: 4 Канал: 204Значение: 204 Канал: 2604 Значение: 2604 Канал: 26704 Значение: 26704 Канал: 26704 Значение: 26704 Канал: 26704 Значение: 26704 Канал: 267004 Значение: 267004 Канал: 2670704 Значение: 2670704