Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2003.03.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.037 c
14-5769
Manulo
2003-02-15 18:33
2003.03.03
Чем дальше в лес, тем злее дятлы????


1-5563
Flashas
2003-02-19 14:34
2003.03.03
profesionaly, Gde QuickReport v Delphi 7?....


14-5804
vil
2003-02-12 13:19
2003.03.03
какой uses нужен


3-5441
VovikA
2003-02-13 13:07
2003.03.03
Как прочитать и откатить транзакцию в MS Sql 200


7-5877
faf
2002-12-26 08:06
2003.03.03
Проблема с видео картой S3 Virge DX





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский