Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |
только не надо мне расказывать что мне надо учить, темболее для начала 02.06.01 12:58 Число просмотров: 902
Автор: !!!! Статус: Незарегистрированный пользователь
|
> короче, пока это дохлое дело. > > придется тебе узнать что такое регистр, для начала. > а потом узнать что такое прерывание. > > советую читать TachHelp или таблицы прерываний и API ДОС.
|
|
<programming>
|
[asm]ну хоть кто то мне поможет? непонятка с ком портом. помогите умоляю. 02.06.01 01:31
Автор: !!!! Статус: Незарегистрированный пользователь
|
[asm]НУ ХОТЬ КТО ТО МНЕ ПОМОЖЕТ? НЕПОНЯТКА С КОМ ПОРТОМ. ПОМОГИТЕ УМОЛЯЮ.
есть 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]ну хоть кто то мне поможет? непонятка с ком портом. помогите умоляю. 24.08.01 12:20
Автор: Chingachguk Статус: Незарегистрированный пользователь
|
> [asm]НУ ХОТЬ КТО ТО МНЕ ПОМОЖЕТ? НЕПОНЯТКА С КОМ ПОРТОМ. > ПОМОГИТЕ УМОЛЯЮ.
Слушай, а почему бы тебе не сделать все проще, те не ждать флагов в порту, а сделать принимающую программу так, чтобы она при успешном приеме байта отвечала тебе, те на комп A каким-нибудь условным значением. Так что после отправки своего байта ты просто ждешь ответа, дождался(если) и передаешь следующий ?!
|
 |
Ответы : -----1) см. описание int 14h --2) в аl влезают числа [0..128] d 02.06.01 01:58
Автор: free Статус: Незарегистрированный пользователь
|
короче, пока это дохлое дело.
придется тебе узнать что такое регистр, для начала.
а потом узнать что такое прерывание.
советую читать TachHelp или таблицы прерываний и API ДОС.
|
 |  |
так какой бит отвечает за прием посланного значения удаленной машине[0..128] 02.06.01 13:04
Автор: !!!! Статус: Незарегистрированный пользователь
|
> короче
|
 |  |
только не надо мне расказывать что мне надо учить, темболее для начала 02.06.01 12:58
Автор: !!!! Статус: Незарегистрированный пользователь
|
> короче, пока это дохлое дело. > > придется тебе узнать что такое регистр, для начала. > а потом узнать что такое прерывание. > > советую читать TachHelp или таблицы прерываний и API ДОС.
|
 |
[asm]ну хоть кто то мне поможет? непонятка с ком портом. помогите умоляю. 02.06.01 01:40
Автор: + <Mikhail> Статус: Elderman Отредактировано 02.06.01 01:49 Количество правок: 1
|
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.
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);
}
}
|
|
|