Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
23.12.2007, 23:19
|
|
Прописка
Регистрация: 11.09.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Немогу разобратся с RS-232 и Delphi
Ребят подскажите решение. Проблема:
Короче у мя МК соберает с датчиков (4 штуки) ds1621 показание и мне надо чтоб в прогу поступали данные в обьекты TEdit (их тоже 4 штуки) каждую секунду.
Прогу для контроллера написал.
Помогите плиз
|
|
|
|
24.12.2007, 00:23
|
|
Прописка
Регистрация: 16.01.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 8 раз(а) в 6 сообщении(ях)
|
Вот пример из MSDN - с него можно начать:
Monitoring Communications Events
The following example code opens the serial port for overlapped I/O, creates an event mask to monitor CTS and DSR signals, and then waits for an event to occur. The WaitCommEvent function should be executed as an overlapped operation so the other threads of the process cannot perform I/O operations during the wait.
Код:
|
HANDLE hCom;
OVERLAPPED o;
BOOL fSuccess;
DWORD dwEvtMask;
hCom = CreateFile( "COM1",
GENERIC_READ | GENERIC_WRITE,
0, // exclusive access
NULL, // no security attributes
OPEN_EXISTING,
FILE_FLAG_OVERLAPPED,
NULL
);
if (hCom == INVALID_HANDLE_VALUE)
{
// Handle the error.
}
// We will build on the current configuration, and skip setting the size
// of the input and output buffers with SetupComm.
fSuccess = GetCommState(hCom, &dcb);
if (!fSuccess) {
// Handle the error.
printf ("GetCommState failed with error %d.
", GetLastError());
return (2);
}
// Fill in the DCB: baud=57,600 bps, 8 data bits, no parity, and 1 stop bit.
dcb.BaudRate = CBR_57600; // set the baud rate
dcb.ByteSize = 8; // data size, xmit, and rcv
dcb.Parity = NOPARITY; // no parity bit
dcb.StopBits = ONESTOPBIT; // one stop bit
fSuccess = SetCommState(hCom, &dcb);
if (!fSuccess) {
// Handle the error.
printf ("SetCommState failed with error %d.
", GetLastError());
return (3);
}
// Set the event mask.
fSuccess = SetCommMask(hCom, EV_CTS | EV_DSR);
if (!fSuccess)
{
// Handle the error.
}
// Create an event object for use in WaitCommEvent.
o.hEvent = CreateEvent(
NULL, // no security attributes
FALSE, // auto reset event
FALSE, // not signaled
NULL // no name
);
assert(o.hEvent);
if (WaitCommEvent(hCom, &dwEvtMask, &o))
{
if (dwEvtMask & EV_DSR)
{
// To do.
}
if (dwEvtMask & EV_CTS)
{
// To do.
}
} |
он на си, но на дельфи только синтаксис поменять...
это просто вызовы win api.
|
|
|
|
24.12.2007, 00:33
|
|
Гражданин KAZUS.RU
Регистрация: 29.06.2006
Сообщений: 638
Сказал спасибо: 37
Сказали Спасибо 56 раз(а) в 41 сообщении(ях)
|
работа с портами под Win NT и выше осуществляется с помощью API функций, а именно открытие/закрытие, чтение/запись в файл только в место файла имя порта или с помощью драйвера, а подробнее можно почитать Последовательные интерфейсы ПК. Практика программирования
и если поискать то можно еще пару книжек найти
|
|
|
|
24.12.2007, 00:51
|
|
Супер-модератор
Регистрация: 13.03.2004
Адрес: Minsk
Сообщений: 2,378
Сказал спасибо: 1,955
Сказали Спасибо 1,328 раз(а) в 578 сообщении(ях)
|
Re: Немогу разобратся с RS-232 и Delphi
Сообщение от Kanava
|
Ребят подскажите решение.
|
Как я понял - нужен пример работы с RS232 на дельфи.
Тогда идите на .... на http://avr.nikolaew.org/primer4.htm там я как-то выкладывал рабочий пример.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 16:46.
|
|