Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[asm]ну хоть кто то мне поможет? непонятка с ком портом. помогите умоляю. 01.06.01 01:34
Автор: помогите Статус: Незарегистрированный пользователь
|
есть 2 компа. компьютер А и компьютер В.
А более производительный чем В. задача передать данные с компьютера А
на компьютер В через ком порт (последовательный порт). итак идет передача с А на В. но возникает проблемма: с А бедут послан символ он запишется в буфет изза того что В менее производительная манина она может не успеть прочесть посланное А значение изза того что А пошлет еще символ который запишется в тот же буфер (поверх ранее посланного мимвола).
надеюсь что мая проблема вам понятно.
Пpеpывание BIOS 14H, утилита 3 используется для контpоля состояния поpта. Утилита оpганизует контpоль состояния поpта, специфициpованного содеpжимым pегистpа DX. После возвpата из состояния, опpеделяемым пpеpыванием, pегистpы АН(канал связи) и AL(модем) будут содеpжать значения, опpеделяющие в соответствии с Таблицей текущее состояние поpта после выполнения пpеpывания BIOS.
Байты состояния последовательного поpта
Состояние канала связи ( АН )
Значение, устанавливающее бит.............. Бит
Готовность данных..................................... 0
Ошибка пеpеполнения.................................1
Ошибка контpоля четности.......................... 2
Ошибка кодиpования...................................3
Ошибка пpи идентификации пpеpывания......4
Регистp накопления пеpедаваемых данных...5
Регистp сдвига пеpедачи пуст.......................6
Выход за допустимый интеpвал вpемени.........7
----------------------
ВОПРОС ВОТ В ЧЕМ:
как по состоянию порта машина А может понять что машина В еще не считала символ?
да и второй ВОПРОС: какое максимальное число можно перидать через ком порт за один раз, т.е. вот отрывок программы
mov dx,0 ;com 1
mov ah,1 ;передача байта
mov al,X ; значение которое мы передаем
int 14h ;прерывание
так какое максимально возможное значение Х возможно?
если ответ слишком большой то если не сложно вышли ответ на x_k@chat.ru
заранее благодарен.
|
|
[asm]ну хоть кто то мне поможет? непонятка с ком портом. помогите умоляю. 02.06.01 01:34
Автор: + <Mikhail> Статус: Elderman
|
Na kakuu platformu pishesh?
esli NT/2000 to vse ochen prosto
hCom = CreateFile("COM1", . . . );
DCB dcb;
dcb.BaudRate = 9600; //ili luboi drugoi
dcb.ByteSize = 8;
dcb.Parity = NOPARITY;
dcb.StopBits = ONESTOPBIT;
// . . .
SetCommState(hCom,&dcb);
esli DLia DOS ili 9x togda posmotry v kakie registry zapihivat` BaudRate
po umolchaniiu v Windows baudRate smotri v WIN.INI
[Terminal]
port=COM1:2400,N,8,1
Voobchem ne mudri posmotri v MSDN.
|
| |
[DOS] Bdogonku 02.06.01 01:51
Автор: + <Mikhail> Статус: Elderman
|
Sample Code
/* Transmitting Machine */
/* Compile options needed: none
*/
#include <stdio.h>
#include <conio.h>
#include <bios.h>
void main(void)
{
unsigned config;
config = (_COM_CHR8|_COM_STOP1|_COM_NOPARITY|_COM_9600);
_bios_serialcom(_COM_INIT,0,config);
while(1)
_bios_serialcom(_COM_SEND,0,(unsigned)getch());
}
/* Receiving Machine */
#include <stdio.h>
#include <conio.h>
#include <bios.h>
void main(void)
{
unsigned config;
unsigned data;
config = (_COM_CHR8|_COM_STOP1|_COM_NOPARITY|_COM_9600);
_bios_serialcom(_COM_INIT,0,config);
while(1)
{
data = 0x0000;
_bios_serialcom(_COM_RECEIVE,0,data);
if (data != 0x0000)
putch((int)data);
}
}
|
|
|