Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.03.03;
Скачать: CL | DM;

Вниз

Срочно!!!! Работа с СОМ-портом   Найти похожие ветки 

 
Dracula2000   (2003-01-02 17:59) [0]

Есть такой вот обработчик:
procedure TComReadThread.Execute;
var
SymbR: Char;
wNum: DWord;
StrR: String;
begin
while (not Terminated) do begin
SymbR:=#0;
ReadFile(hCom,SymbR,1,wNum,nil);
if SymbR=#13 then begin
MainForm.Memo1.Lines.Add(StrR);
StrR:="";
end else StrR:=trim(StrR+string(SymbR));
end;
end;
До коннекта читаем из порта прекрасно, после - ни одного символа не принимается... запарился уже, где грабли?
Тут сроки горят - ооочееень срочно надо!!!!


 
Александр Спелицин ©   (2003-01-02 19:07) [1]


> До коннекта читаем из порта...

Простите, а до какого коннекта?



 
bosikov   (2003-01-02 22:14) [2]

Ты в корне неправильно работаешь с Сом портом.
Сначала необходимо окрыть порт.Потом считать настройки . Затем загрузить свои -Это для первого раза. А потом уже работать с ним . Прочитай внимательно МСДН там все на WinApi хорошо написано с примерами.
DCB dcb;
BOOL fSuccess;
hCom = CreateFile( NameCOMPort,
GENERIC_READ | GENERIC_WRITE,
0, // comm devices must be opened w/exclusive-access
NULL, // no security attributes
OPEN_EXISTING, // comm devices must use OPEN_EXISTING
0, // not overlapped I/O
NULL // hTemplate must be NULL for comm devices
);

if (hCom == INVALID_HANDLE_VALUE)
{
//printf("Could not open COMPORT.\n"); // process error
return(1);
}

// Получить текущие данные DCB

fSuccess = GetCommState(hCom, &dcb);

if (!fSuccess)
{
//printf("Could not Get COMPORT DCB.\n"); // process error ;
return(2);
}

switch( Speed)
{
case 110:
dcb.BaudRate = CBR_110; break; // скорость обмена данными
case 300:
dcb.BaudRate = CBR_300; break;
case 600:
dcb.BaudRate = CBR_600; break;
case 1200:
dcb.BaudRate = CBR_1200; break;
case 2400:
dcb.BaudRate = CBR_2400; break;
case 4800:
dcb.BaudRate = CBR_4800; break;
case 9600:
dcb.BaudRate = CBR_9600; break;
case 14400:
dcb.BaudRate = CBR_14400; break;
case 19200:
dcb.BaudRate = CBR_19200; break;
case 38400:
dcb.BaudRate = CBR_38400; break;
case 56000:
dcb.BaudRate = CBR_56000; break;
case 57600:
dcb.BaudRate = CBR_57600; break;
case 115200:
dcb.BaudRate = CBR_115200; break;
case 128000:
dcb.BaudRate = CBR_128000; break;
case 256000:
dcb.BaudRate = CBR_256000; break;

default :
dcb.BaudRate = CBR_115200;
}

// Заполнение блока описания устройства DCB:
// бод=115,200 bps, 8 бит, не проверки на четность, и 1 stop bit.

dcb.fParity = 0;
dcb.fOutxCtsFlow = 0;
dcb.fOutxDsrFlow = 0;
dcb.fDtrControl = DTR_CONTROL_DISABLE;
dcb.fDsrSensitivity = FALSE;
dcb.fTXContinueOnXoff = 0;
dcb.fOutX = 0;
dcb.fInX = 0;
dcb.fErrorChar = 0;
dcb.fNull = 0;
dcb.fRtsControl = RTS_CONTROL_DISABLE;
dcb.fAbortOnError = 0;
dcb.ByteSize = 8; // размер ,бит - байт 4-8
dcb.Parity = NOPARITY; // не проверять на четность
dcb.StopBits = ONESTOPBIT; // один стоповый бит

// настроить ComPort с новими параметрами
fSuccess = SetCommState(hCom, &dcb);
//printf("Open COMPORT TRUE\n");
// Установка парамметров TimeOut

COMMTIMEOUTS CommTimeouts;
GetCommTimeouts (hCom, &CommTimeouts);

// Измениение парамметров COMMTIMEOUTS structure settings.
CommTimeouts.ReadIntervalTimeout = 50;
CommTimeouts.ReadTotalTimeoutMultiplier = 100;
CommTimeouts.ReadTotalTimeoutConstant = 150;
CommTimeouts.WriteTotalTimeoutMultiplier = 10;
CommTimeouts.WriteTotalTimeoutConstant = 10;


return(0);
Это пример с моей программы для окрытия порта все работает как надо.


 
Dracula2000   (2003-01-03 10:57) [3]

Неужели я плохо объяснил... - Порт открываю нормально, читаю его данные, конфигурю - все как в обычном терминале... устанавливаю связь... После этого послать данные могу, а принять - НЕТ!!!

Так что, про настройки порта мне рассказывать не надо - мне лучше расскажите, почему после связи нет ПРИЕМА!!!!


 
Ops   (2003-01-03 11:24) [4]

Программа на другом конце вышла ли на передачу
Проверь через терминал... Может собака то и не там зарыта


 
Dracula2000   (2003-01-03 17:44) [5]

Все... спасибо хоть за попытки помочь... разобрался сам...



Страницы: 1 вся ветка

Текущий архив: 2003.03.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
1-5578
NAlexey
2003-02-19 16:01
2003.03.03
Handle в WindProc?


3-5428
Sirus
2003-02-13 06:49
2003.03.03
Можно ли TQuery из DLL связать с TDatabase из основной программы?


1-5603
Ahmad K
2003-02-18 23:52
2003.03.03
КАК ПЕЧАТАТЬ TMEMO?


14-5847
xoxol
2003-02-11 06:27
2003.03.03
FORMAT C:


3-5455
mate
2003-02-13 15:43
2003.03.03
Номер записи