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

Вниз

Приложение по работе с устройством по RS232 теряет байты   Найти похожие ветки 

 
plr   (2011-07-06 19:13) [0]

Досталось мне в наследство приложение 2005 года (Delphi6 исходные коды) по работе с купюроприёмником CashCode CCNET, которое работает по RS232.

Для работы с портом используется библиотека CPort http://comport.sf.net/

За приложением последнее время замечается, что периодически ни с чем не связанная проблема потери байт.

И я не знаю как подступиться, тем более, я толком не разработчик.

Прощу помощи от специалистов, кто разбирается в работе с RS232 с внешними устройствами, чтобы сделать аудит кода, указать на "узкие" места, предложить варианты решения и, возможно, доработать приложение, чтобы оно работало лучше.

За работу мы заплатим.

Пишите пожалуйста job.rabota@gmail.com

P.S. Я понимаю, что надо копаться в чужом коде, который еще и 2005 года выпуска, но объем кода небольшой.

Я понимаю, что у вас нет устройства и я не смогу его предоставить, придётся на пальцах, но можно еще подглядеть как работает у "старших" братьев http://dev.cyberplat.com/redmine/repositories/browse/pt/2.0/src/Modules/Devices/Protocols/Validators/CCNet/Implementation1

Выложить исходники не могу, лучше мы сработаем с кем-то персонально.


 
Loginov Dmitry ©   (2011-07-06 23:03) [1]


> За приложением последнее время замечается, что периодически
> ни с чем не связанная проблема потери байт.


Приложение может не причем. Бывает, что в таких ситуациях виновато железо. Пишите все отправленные и полученные байты в логи. Можно воспользоваться программой PortMon (в случае ОС Windows) (или иными аналогичными программами). При возникновении проблемы (например, пользователь сунул купюру, а на экране устройства ничего не отобразилось), можно отреагировать на соответствующее обращение пользователя, главное, чтобы был известен момент времени выполнения операции.

Проблема только на одной точке или на нескольких?


 
plr   (2011-07-06 23:44) [2]

Проблема на разных компьютерах, разных купюроприёмниках, понимаете, что это платёжные терминалы на которых не просто наблюдать вживую плюс возникает эта ситуация непредсказуемо и самое главное, мы не сразу о ней узнаем, а когда узнаём не знаем точного времени, чтобы по логам отследить.

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


 
Германн ©   (2011-07-07 01:07) [3]


> P.S. Я понимаю, что надо копаться в чужом коде, который
> еще и 2005 года выпуска, но объем кода небольшой.

Найдите и наймите лучше кого-нибудь, кто напишет новый грамотный код.

P.S. А как вы определили что имеет место именно "потеря байт"?


 
sniknik ©   (2011-07-07 01:11) [4]

что то странное... не знаете ничего, но знаете что байты "пропадают", откуда?
претензии клиентов в том что им денег недодали? в любом случае должны быть логи, номер транзакции, запросы к серверу, и т.д.. т.е. сопоставив эту инфу с тем откуда узнали о  байтах, найдете и время...

> Нужен профессиональный взгляд специалиста.
разрабатываете платежный софт и не имеете специалиста?... время нанять.
не разрабатываете, а пользуетесь чужим?... звоните в поддержку.


 
Германн ©   (2011-07-07 01:51) [5]


> Досталось мне в наследство


> За работу мы заплатим.

Кому "мне" и кто "мы"?

P.S. Не мне судить, но этому топику не место в тематических конференциях!
Пусть обращается на "Королевскую площадь" или на "помощь студентам" на Исходниках или на Винграде.
А у нас пусть пойдёт в "Прочее".


 
tesseract ©   (2011-07-07 11:26) [6]

А вот нефиг использовать сторонние компоненты. Вес которых причем превышает код на api раз в 60.


> P.S. А как вы определили что имеет место именно "потеря
> байт"?


Встречался c такими "потерями" на зашумленных линиях (провод рядом с холодильниками). Но там была не "потеря", а CRC бился.


 
Anatoly Podgoretsky ©   (2011-07-07 11:36) [7]

> tesseract  (07.07.2011 11:26:06)  [6]

Особенно при нарушение спецификации на длину провода и/или его тип.


 
tesseract ©   (2011-07-07 11:52) [8]


> Особенно при нарушение спецификации


Там весьма недесткий кабелёк c экраном.  
Спецификации по длине провода на Rs232 весьма запутаны кстати. Столько-то метров при такой фазе луне и такой скорости порта и с таким драйвером :-)


 
plr   (2011-07-07 12:06) [9]

> Найдите и наймите лучше кого-нибудь, кто напишет новый грамотный код.

Ищем кого нанять на разовую работу, нет же предрассудков ни у кого на этот счёт, да?

> разрабатываете платежный софт и не имеете специалиста?... время нанять.

Как много сочувствующих людей. Мы разрабатываем софт для себя и сами его эксплуатируем. Драйвер купюроприемника, о котором идёт речь разработан был в 2005 году разработчиком по-контракту (с ним контакт потерян), сейчас ищем специалиста, кто смог бы нам помочь с "причёсыванием оного".

> P.S. А как вы определили что имеет место именно "потеря байт"?

"Лишние" деньги в стекере иногда попадаются и обращения плательщиков.

> в любом случае должны быть логи, номер транзакции, запросы к серверу, и
> т.д.. т.е. сопоставив эту инфу с тем откуда узнали о  байтах, найдете и
> время...

Плательщики обращаются не сразу, не помнят точное время, проблема возникает редко, не могли ни разу засечь точное время и посмотреть логи.

> Встречался c такими "потерями" на зашумленных линиях (провод рядом с
> холодильниками). Но там была не "потеря", а CRC бился.

Холодильников нет, корпус терминала - экран, CRC не бьётся в принятых данных.

> Особенно при нарушение спецификации на длину провода и/или его тип.

Провод 1-1,3 м


 
Inovet ©   (2011-07-07 12:31) [10]

> [9] plr   (07.07.11 12:06)
> CRC не бьётся в принятых данных

Может ошибка где-нибудь в программе давится.


 
tesseract ©   (2011-07-07 13:48) [11]


> Может ошибка где-нибудь в программе давится.


Может мусор в буфер набивается сдвигая последовательность? Редкий баг трудноуловимый.


 
plr   (2011-07-07 15:18) [12]

2tesseract: при расчете CRC? Может быть, я уже в таких тонкостях не разбираюсь.

Но я всё таки думаю, что там проблема в циклах опроса порта и обращений к нему, может быть в них не всё попадает.


 
Dennis I. Komarov ©   (2011-07-07 15:23) [13]


> Как много сочувствующих людей. Мы разрабатываем софт для
> себя и сами его эксплуатируем. Драйвер купюроприемника,
> о котором идёт речь разработан был в 2005 году разработчиком
> по-контракту (с ним контакт потерян), сейчас ищем специалиста,
>  кто смог бы нам помочь с "причёсыванием оного".

Непонятно, чего Вы (или кого) тут хотите найти? С одной стороны предлагаете разовую работу, с другой не говорите что надо. (Абстракция "надо подружить некий девайс" не катит)  90% что код придется переписывать, а не причесывать. А как это творение отлаживать вообще не понятно.


 
sniknik ©   (2011-07-07 15:54) [14]

> 90% что код придется переписывать, а не причесывать.
в 99% случаев при
> но объем кода небольшой.
это еще и проще...


 
Anatoly Podgoretsky ©   (2011-07-07 16:39) [15]


> Провод 1-1,3 м

Тогда этого достаточно для передачи на скорости 115200 на 1.5 метра, незащищенным кабелем.


 
tesseract ©   (2011-07-07 16:50) [16]


> Тогда этого достаточно для передачи на скорости 115200 на
> 1.5 метра,


Вообще-то 15-ти. Но многое будет зависеть от драйвера  порта.


 
Anatoly Podgoretsky ©   (2011-07-07 16:54) [17]

> tesseract  (07.07.2011 16:50:16)  [16]

Правильно, я ошибся, конечно 15


 
Anatoly Podgoretsky ©   (2011-07-07 16:57) [18]

Хотя вот виписка из дурипедии

> На практике, в зависимости от качества применяемого кабеля,
>  требуемое расстояние передачи данных в 15 метров может
> не достигаться, составляя, к примеру, порядка 1,5 м на скорости
> 115200 бод для неэкранированного плоского или круглого кабеля.

15 метров это вроде для скорости 9600


 
tesseract ©   (2011-07-07 17:07) [19]


> 15 метров это вроде для скорости 9600


Это по стандарту. RS232S-C вообще 115200 не содержит. На практике с драйверами по рассчетам выходит предел в 15 метров.  19200 например жгло на  50 метров на витой паре на складах без проблем.


 
tesseract ©   (2011-07-07 17:08) [20]

на 9600 бод неэкран по стандарту - 76 метров.

http://www.vtsoft.ru/support/service/rs232.php


 
plr   (2011-07-07 19:31) [21]

> Непонятно, чего Вы (или кого) тут хотите найти? С одной стороны предлагаете
> разовую работу, с другой не говорите что надо.

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

Предложить, что можно переделать и почему.

Мы договоримся о цене и сроках.


 
Inovet ©   (2011-07-07 19:56) [22]

А стандартный драйвер Майкрософт чем не устраивает?


 
plr   (2011-07-07 20:46) [23]

2Inovet: дайте ссылку на стандартный драйвер купюроприёмника от Майкрософта, я не знаю. Если вы о Cport, то он был выбран и использован, думаю из-за удобства, не знаю.


 
DiamondShark ©   (2011-07-07 20:49) [24]


> А стандартный драйвер Майкрософт чем не устраивает?

Видимо, своим отсутствием.


 
Inovet ©   (2011-07-07 21:20) [25]

> [24] DiamondShark ©   (07.07.11 20:49)
> > А стандартный драйвер Майкрософт чем не устраивает?
>
> Видимо, своим отсутствием.

Хм, наверно я что-то не понимаю. А что тогда у меня в диспетчере устройст написано:
Последовательный порт (COM1)
Поставщик драйвера: Microsoft
и т.д.

И терминал с портом работает - отправляет принимает.


 
plr   (2011-07-07 21:46) [26]

2Inovet. Да, получается вы не понимаете. Где я писал, что меня не устраивает "драйвер COM-порта"? Речь идёт о драйвере устройства, которое работает через стандартный COM-порт, на который конечно же устанавливается стандартный драйвер COM-порта.


 
Сергей М. ©   (2011-07-07 22:10) [27]


> не знаю как подступиться, тем более, я толком не разработчик.
> Прощу помощи от специалистов


Ну и чего ты собссно хотел, если ты дуб дубом , судя по цитате ?
Идешь в любой фриланс-ресурс и трясешь там лопатником ..
Здесь-то ты ЧТО хотел ?)


 
Inovet ©   (2011-07-07 22:12) [28]

> [26] plr   (07.07.11 21:46)
> Речь идёт о драйвере устройства

Понятно. А протокол работы с устройством известен, документирован?


 
Inovet ©   (2011-07-08 01:27) [29]

> [28] Inovet ©   (07.07.11 22:12)
> А протокол работы с устройством известен, документирован?

Через порт в смысле.


 
Dennis I. Komarov ©   (2011-07-08 11:03) [30]

Да не нужен там никакой драйвер. R/W через COM, чего лапшу на уши вешать? Спецификации к девайсу нужны, и еще, как я понял, девайсы различные, и протоколы тоже могут отличаться. А про "надо немного допилить готовое" не надо... Железо, спецификации и требования в студию, и еще на сколько Вы за это готовы обеднеть, а то "Мы договоримся о цене и сроках" не о чем. Может кто и...

З.Ы.
> Мы разрабатываем софт для себя и сами его эксплуатируем.

ССЗБ


 
tesseract ©   (2011-07-08 12:39) [31]


> Да не нужен там никакой драйвер.


Так действительно называют библиотеки для работы с устройством. Драйвер ведь не обязательно должен работать в режиме ядра и поддерживать pnp.


 
Dennis I. Komarov ©   (2011-07-08 13:17) [32]


> Так действительно называют библиотеки для работы с устройством.

Ты меня понял... ;-)

copy a.txt prn (lpt) тоже драйвером кликать будем? :)


 
tesseract ©   (2011-07-08 13:55) [33]


> copy a.txt prn (lpt) тоже драйвером кликать будем? :)


Почему-то на COM-порт не отрабатывает.


 
Anatoly Podgoretsky ©   (2011-07-08 14:13) [34]

> tesseract  (08.07.2011 13:55:33)  [33]

Потому что нужно указывать AUX а не PRN
Работает отлично. В свое время были принтеры, подключеные по COM


 
tesseract ©   (2011-07-08 14:49) [35]


> В свое время были принтеры, подключеные по COM


Что прям без перенастройки порта  перед copy?


 
Германн ©   (2011-07-08 14:53) [36]


> Что прям без перенастройки порта  перед copy?

Ну куда же без моды?
:)


 
Anatoly Podgoretsky ©   (2011-07-08 14:56) [37]

> tesseract  (08.07.2011 14:49:35)  [35]

Именно так, но можно было и перенастраивать, команда MODE в ДОС, и/или
параметры порта в устройствах.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2011.11.06;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.003 c
2-1310474200
SIV5000
2011-07-12 16:36
2011.11.06
JPEG error + on E: Exception


15-1310017395
И. Павел
2011-07-07 09:43
2011.11.06
Запрет на повторный запуск программы под одним пользователем


15-1309965191
plr
2011-07-06 19:13
2011.11.06
Приложение по работе с устройством по RS232 теряет байты


15-1309939617
Nikita_novice
2011-07-06 12:06
2011.11.06
Странности IDE Delphi 7


1-1271942672
Delpherrr
2010-04-22 17:24
2011.11.06
Как изменить TextHeight формы в RunTime?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский