информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Spanning Tree Protocol: недокументированное применениеЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[DOS] 02.06.01 01:47  Число просмотров: 800
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
/* 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);
}

}
<programming>
как решить проблемму с перидачей инф через асинхронный послндовательный канал связи 30.05.01 16:02  
Автор: ah Статус: Незарегистрированный пользователь
<"чистая" ссылка>
как решить проблемму с перидачей инф через асинхронный послндовательный канал связи
я передаю символ потом сразу другой и так далее
ну а если удаленная машина не успеет считать передаваемый символ т.е. на него сразу запишется другой
т.е. машины с разной скоростью (опсолютно с разной)
как решить эту проблемму
[DOS] 02.06.01 01:47  
Автор: + <Mikhail> Статус: Elderman
<"чистая" ссылка>
/* 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);
}

}
решить проблему с перeдачей инф ! 02.06.01 01:33  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Та машина откуда передается поток данных - сервер.
Кто принимает поток данных, передаваемых сервером - клиенты.

Для того, чтобы наладить общение между сервером и клиентами нужно создать определенный протокол, по которому будет идти это общение.

Т.е. нужна обратная связь.

Обратная связь можно реализовать как угодно.
Например - клиент имеет буффер, в который считывает данные приходящие от сервера; назовем этот буффер - "стеком" (организовать его можно как угодно - дека, очередь, стек).

В случае, если "стек" не может вместить вновь поступившие данные, то у клиента возникает изменение значений флагов, и пусть клиент посылает серверу соответсвующее сообщение - обратная связь.

Это элементарные прописные истины.

Кстати, потокол должен быть с проверкой целостности переданного сообщения ?
.........

Короче, ответ сильно зависит от задачи, которую ты собираешься решить.

что есть приемник - -микросхема? - плата? - эвм? - цифровая? - аналоговая? - что это?
приемник это програмируемый контроллер 02.06.01 13:00  
Автор: й Статус: Незарегистрированный пользователь
<"чистая" ссылка>
й
протокол нужно сочинить 03.06.01 02:24  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Я бы сделал так :
взял бы папу для 9-пинового ком. порта.
Припаял бы к папе 2 проводочка, ну скажем на 3й и 2й пины.
- через 3ий пин передаем, со 2ого читаем.

Припаял бы проводок от 3его пина к одному , от 2ого - к другому порту "контроллера".

далее протокол :

Что делает сервер :

>>>>>>состояние init)

шаг 0) посылаю в порт значение, ну скажем 11h ,
шаг 1) жду ответа - ну скажем ответ должен быть 10h
ответ есть :
- да - прочитал из порта 10h : значит контроллер жив и отвечает - переход к состоянию run
- нет - не прочитал 10h из порта - значит либо порт сдох, либо девайс сдох -
- наступил тайм-аут?
- да - переход к состоянию done
- нет - переход к шагу 1

(кстати, о времени - через сколько наступит тайм-аут?).

>>>>>>состояние run)
шаг 0) посылаю в порт очередной байт, переход к шагу 1

шаг 1) - жду ответа , ну скажем, опять 10h: ответ пришел ?
- да - прочитал из порта 10h , переход к шагу 2 :
- нет -
- время ождидания вышло :
- да - переход к состоянию done
- нет - возврат к шагу 1

шаг 2) пользователь :
- напечатал следующий байт
- да? -переход к шагу 3
- нет - переход к шагу 3

шаг 3) введенный байт есть признак окончания работы (скажем, EEh)
- да это ееh- переход в состояние done
- нет
- наступил тайм-аут ?
- да - переход к состоянию done
- нет :
- возврат на шаг 3
- перешли к шагу 0

>>>>>>>cостояние done)

шаг 0) послали в порт значение eeh , переход к шагу 1
шаг 1) ждем ответа - ну скажем ffh
- ответ пришел ?
- да - закрыли приложение
- нет ?
- наступил тайм - аут?
- да - закрыли приложение
- нет - переход к шагу 1
_____________

Клиента напишите самостоятельно?

- ок.
это все очень легко и примитивно и не рационально и имеет недостатки и узкие места.

НО ВЫ ЖЕ ДАЖЕ ДО ТАКОГО САМОСТОЯТЕЛЬНО ДОДУМАТЬСЯ НЕ МОЖЕТЕ !!!!!!!
>8E~~~~~~~~

:-)))))))))))

никого не хочу обидеть.
как решить проблемму с перидачей инф через асинхронный послндовательный канал связи 31.05.01 02:11  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> как решить проблемму с перидачей инф через асинхронный
> послндовательный канал связи
> я передаю символ потом сразу другой и так далее
> ну а если удаленная машина не успеет считать передаваемый
> символ т.е. на него сразу запишется другой
> т.е. машины с разной скоростью (опсолютно с разной)
> как решить эту проблемму

по правде сказать не представляю такое устройство, чтобы не успело считать.
вопрос: а почему именно посимвольная передача? нельзя ли целым пакетом, т.е. буфером? тогда имеет смысл ввести идентификатор пакета с контрольной суммой, и при успешной передаче, уведомление отправителю.
короче говоря свой мини TCP Connection. а механизм синхронизации можно решить. введешь таймаут, и следующий пакет отправишь когда в течении таймаута получил уведомление об успешной доставке. Ведь на приемнике можно выделить буффер такого размера, чтобы 1 пакет поместился.
Та что вы тут мне про TCP IP расказываите и про socket я про ком порт спрашиваю (куда вы мышку суете)!!!! 02.06.01 01:12  
Автор: !!!! Статус: Незарегистрированный пользователь
<"чистая" ссылка>
111
по больше воображения, начальник :-))) 02.06.01 02:08  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
ну во-первых, никто про socket не говорил
во-вторых о споре насчет COM порта и речи идти не может :-)))) человек четко выразился насчет последовательного порта.
в-третьх, я не говорил TCP/IPв буквальном смысле, а всего лишь о его минимальной технологии.

Есть давно испробованные технологии, вот их идеи и надо использовать. или придумать свой, но намного лучше. для данной задачи не стоит велосипед изобретать. есть понятие КПД работы.
твоя фраза что не стоит велосипед изобретать генеальна. но его всетаки пытаешся изобрести. так как 02.06.01 13:09  
Автор: !!!! Статус: Незарегистрированный пользователь
<"чистая" ссылка>
так как при передаче какогото значения на удаленный объект в регистре состояния один из битов четко говорит был ли считан символ машмной или нет. и моя проблемма узнать какой это бит.
слова не мои. так что ничего гениального 02.06.01 18:09  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> так как при передаче какогото значения на удаленный объект
> в регистре состояния один из битов четко говорит был ли
> считан символ машмной или нет. и моя проблемма узнать какой
> это бит.

по этому поводу, к сожалению, я не могу ничего сказать.
в свое время писал что-то для Passport Reader. если замечал, то на многих паспортах есть машиночитаемая зона. так вот там бали байты конец и начало информации. но никакой гарантии о полноте данных, т. к. протокол составлял не я. такая гарантия может быть контрольная сумма.
а тут, на сколько я понял, ты сам волен составлять свой протокол передачи и получения. я всего лишь предложил одну из моделей.
Для подтверждения операции зап/чт вызови WaitForSingleObject или GetOverlappetResult 30.05.01 16:53  
Автор: WiB Статус: Незарегистрированный пользователь
<"чистая" ссылка>
а как ето сделать на ASM в досе???? 31.05.01 01:17  
Автор: lukash Статус: Незарегистрированный пользователь
<"чистая" ссылка>
???
элементарно. 02.06.01 01:40  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
в ДОС есть такая штука, как прерывания.

после вызова прерывания, в регистрах и флагах, в зависимости от предыдущего состояния регистров и флагов, появляются новые значения.


каков вопрос - таков ответ.
я вас прошу хватит форум флудить и просто ответить какой бит в реристре состояния отвечает за прием удаленной машиной посланного значения 02.06.01 13:13  
Автор: !!!! Статус: Незарегистрированный пользователь
<"чистая" ссылка>
я вас прошу хватит форум флудить и просто ответить какой бит в реристре состояния отвечает за прием удаленной машиной посланного значения
это не флуд 03.06.01 01:31  
Автор: free Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> я вас прошу хватит форум флудить и просто ответить какой
> бит в реристре состояния отвечает за прием удаленной
> машиной посланного значения

Отвечаю : никакой.

Более конкретный ответ:никакимобразомнельзяузнать что творится с приемником.

Для того, чтобы что-то можно было узнать о приемнике необходима обратная связь.
Т.е. приемник должен отвечать на посланный запрос. - что само собой разумеется.


Зачем люди пишут драйвера, вы когда-нибудь задумывались? - а что такое драйвер вообще задумывались?
:(

Попробуй сделать следующее : установи чистый ДОС 6.хх , после чего воткни в ком. порт мышку, затем обрежь кабель (в том месте, где он подходит к мыше).
Сними с хвоста мыши кембрик и оголи контакты, после чего воткни эти контакты в землю. А затем попробуй переслать что-нибудь в этот порт и прочитать что-нибудь из порта- при определенных условиях никакой ошибки не возникнет.
Вот таким макаром можно подключить к компу новый девайс под названием "земля", а также утюг и холодильник.

да?
Делай более медленую машину - передающей ! 30.05.01 16:39  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Шутка.
Что такое "асинхронный послндовательный канал связи" ?

Не волнуйся, все сохранится в буферах. Когда буфер переполнится, ты просто записать не сможешь. (так в сокетах)
(ком порт) это совершенно не решает проблеммы, напротив возникает обратная 31.05.01 01:21  
Автор: lukash Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1
Не понял ! 31.05.01 18:17  
Автор: PS <PS> Статус: Elderman
<"чистая" ссылка>
Ты хочешь сказать что человек пишет напрямую в порт (как в ДОС), не используя стандартные механизмы, типа сокетов ????

Но при таком подходе ему придеться разработать собственный низкоуровневый протокол передачи даных :( С посылкой пакетов, ответов, контроля и пр.
Да, и это не так уж и сложно 31.05.01 18:54  
Автор: WiB Статус: Незарегистрированный пользователь
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach