Что такое код writecomm

Содержание

Что такое код writecomm

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

Кстати, боюсь, что универсально через AT-комманды, через модем будет не очень очевидно и просто. Вобщем, копать надо.

а это очень просто, и я это не единожды делал.

Берем сотик и комп, соединяем шнурком и через обычную терминалку в компорт любые команды проходят, ответы возвращаются.

Теперь сотик и КПК. Проблема в «шнурке». Теоретически там тоже самое. Даже если через БТ, все равно сотик отдаст модем на ком-порт и все тоже самое.
Я пробовал простейшие AT-команды через терминалку с КПК — работало. Потом другим занялся, не доразобрался. Самому интересно, но руки не доходят.

Экспериментировал.
Нарыл АТ команду, которая вроде бы должна делать запрос баланса.

AT+CUSD=1,»*100#» — Кому несложно — проверьте плиз на своих девайсах (Сотовый+ПК, Сотовый+КПК)

Но оно у меня не работает.
Во встроенной терминалке при звонке пишет ERROR

На простые команды типа АТЗ откликается ОК

Смотрел исходники DCIbalance
Там действительно РИЛ
GetProcAddress(SendService. ) что-то вроде этого

Я уже думал над возможностью переделывания этой проги.
И в той ветке задавал вопрос. Ответа пока нет.

А весчь может получиться действительно полезной для тех кто ходит в тырнет через мобилу.

Говорят, что работает такое:
at+cusd=1
OK
atd*110*10#
OK
+CUSD: 2,»Vashe zamovlennja pryjnjato, Vy otrymajete vidpovid cherez dejakyj chas.»,255

>MalVal
Кстати MVbalance — твоя прога?

Сообщение отредактировал Klev_ — 16.07.08, 21:48

Klev_,
я ж написал, что это реально работает. Правда не со всеми сотовыми. Я игрался с сименсами. Из моего опыта это самые беспроблемные модемы. Я писал терминалку на покет и через нее по БТ вручную запрашивал баланс и получал.

Added @ 16.07.2008, 21:22

>MalVal
Работает, проверял только в режиме ansi

at+cusd=1,»#100#»,15
+CUSD: 0, «Balance:303,24 R. . «

Итого: проблема решена.
Теперь вопрос:
Сможешь ли ты встроить возможность запроса через АТ команды в свой тудей плагин.
Естественно с возможностью выбора порта (например COM1 BTC1:) и возможностью введения строки запроса (at+cusd=1,»#100#»,15) вручную.
Или надо будет самому исправлять DCIBallance?

Сообщение отредактировал Klev_ — 16.07.08, 22:51

Помогите разобраться с COM портом!

Поиск на форуме
Расширенный поиск
Найти все хорошие сообщения
К странице.

Написал программку для управления железкой по ком порту!
Команда посылается в виде HEX кода ( F8 8F 02 00 00 00 00 00 02)
Проблема в следующем: при посыле команды команда отправляет строку, но через Port Monitor получаю нечто вида: F8 8F 02 00 3e 4a итд, либо ошибки.
При посыле данных до 4х значений т.е. F8 8F 02 00 все прекрасно.

Вот код программки,

Админ: Учимся пользоваться тегами!

Помогите плиз а то уже второй день выспаться не могу перерыл все дебри инета.

Функция WriteComm

Описание:

function WriteComm(Cid: Integer; Buf: PChar; Size: Integer): Integer;

Выводит буфеp, указанный Buf, в устpойство связи.

Параметры:

Cid: Устpойство связи.
Buf: Буфеp, содеpжащий записываемый символ.
Size: Число выводимых символов.

Возвpащаемое значение:

Фактическое число записанных символов; отpицательное число, если ошибка, абсолютное значение котоpой есть число символов, записанных до того, как возникла ошибка.

Когда необходим код протекции, и как им пользоваться?

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

Код протекции в Яндекс.Деньгах. В чем заключается его необходимость?

Яндекс.Деньги – это система платежей, которая является одной из самых популярных в Интернете. Ею пользуются очень часто, она принимает и переводит большие суммы денег. В связи с этим дополнительная защита, созданная разработчиками системы, не будет излишней функцией, а наоборот, это необходимость. Код протекции может быть использован при переводе любых сумм денег. Еще такой перевод называют двухфазным платежом.

В каких случаях нужен код протекции?

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

Как установить код протекции, и выполнить перевод средств?

Для того чтобы платеж дополнительно был защищен кодом, нужно выполнить ряд действий. Часто используется пользователями форма быстрого перевода, тогда, обычно, нажимается опция «Перевести«, но в этом случае код протекции не будет установлен, следовательно, будет отсутствовать дополнительная защита платежа. Установить код можно, нажав на опцию «Больше возможностей«.

Появится страница и в поле «Кому» вводится номер получателя, далее вводят сумму перевода и оплату с учетом комиссии 0,5 %. Ставится галочка перед графой — «Защита кодом протекции«, на какой срок вводится (от 1 до 365 дней). Если на протяжении срока, установленного в графе, код протекции не был введен, то деньги возвращаются отправителю. Также деньги будут возвращены, если трижды неправильно ввести код. Обязательно его номер должен быть любым способом сообщен получателю, чтобы он смог им воспользоваться. В качестве дополнительной информации можно указать описание и название платежа для истории. Генерируется код протекции автоматически и после отправления денег его не изменить.

Как быть, если код протекции забыт, после того, как отправлен перевод Яндекс.Деньги?

Не стоит отчаиваться, если вдруг, по каким-либо обстоятельствам код протекции забыт. В таком случае его можно просмотреть на странице, где подробно описаны детали платежа. При этом нужно войти в раздел «История операций«, обозначить в графе платеж, который производился с кодом протекции, и нажать на ссылку в его названии.

Получение перевода, с использованием кода протекции

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

Arduino.ru

Arduino и дисплеи от сотиков мобильных телефонов

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

А что по твоему X-bus

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

В доках Атмела X-bus — название шины(интерфейс) для «External Memory Interface» , позволяет расширять внутреннюю SRAM извне до 64 килобайт напрямую (как родную, прозрачно для компиляторов) и больше «с извращениями». Есть примеры наращивания SRAM до 512кбайт. :)

Далеко не каждый камень имеет этот интерфейс у Атмела, поэтому он «малоизвестен»..

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

В контроллере дисплея шина 18 битная. Но выведена на разъемы 8 битная. А вот есть ли на шлейфе выводы для

Насчет X-bus. Это шина, по стандарту i2c. Они аналогичны. И по этой шине работает внешняя память, поддерживающая

ее. Просьба назвать пару кирпичей с шиной X-bus. Почитаю.

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

регистры контроллера дисплея.

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

О, пасибки. Это и хотел узнать. Камни Атмела с шиной расширения внутренней SRAM: ATmega2560 и все её клоны 640, 1280 .. 2561 и т.д. + ATmega128a аналогично. За остальные не скажу, есть ещё какие-то, но уже не помню. На сайте Атмела, при выборе камня по параметрам этот интерфейс тоже назван X-bus .. какой стандарт имеете Вы ввиду (с чем путается) — я не в курсях. То что I2C ещё называют по-разному — читал, таже абревиатура TWI от Атмела .. Есть некий X-bee, а вот за такой алиас для I2C — не сталкивался ни разу, тем более в среде ардуинщиков.

Вобщем-то я хотел понять можно ли активируя шину расширения SRAM назначить в ней некий адрес порту контроллера дисплея и тупо присваивать ему значения в программе, типа так:

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

Не особо силен в английском. Но судя по даташиту, засылаешь в дисплей в 20 регистр адрес по Х,

затем в 21 регистр адрес по Y, потом в 22 регистр данные. Автоинкремент адреса есть.

Только у контроллера дисплея нет шины i2c. Есть из последовательных только SPI.

Поэтому к этому дисплею X-bus не прикрутишь.

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

Я уже пытался разъяснить разницу между АРМ-овским понятием xBUS (I2C) и Атмеловским X-bus (Extra RAM bus) .. планирую прикрутить X-bus, а не xBUS. :)

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

По какой шине работает Атмеловская X-bus, последовательной или параллельной?

Может ты имеешь ввиду XRAM?

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

Угу, её родимую. давно уже нравится.

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

XRAM это для параллельной памяти. Это не X-bus. К дисплею ее напрямую не привязать. Да и не зачем.

В контроллере дисплея есть память, но адресация к ней идет через его регистры, плюс данные и команды

идут по общей шине. А атмеловский XRAM подразумевает раздельную шину, расчитанную на параллельную

память. Как то так.

Объясни толком, что ты хочешь в итоге получить?

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

Ну, так вот и хочу посадить дисплей с этим параллельным интерфейсом на шину расширения памяти: использовать свою уже готовую плату расширения памяти — на ней есть защелка младшей части адреса и обвес сигналов выборки/записи. Тупо на полную шину адреса (после защелки) повесить «монтажное И» на некоторую выделенную пару адресов, например 0xF00(0/1) — без сигнала А0, сигнал А0 с платы расширения памяти завести на сигнал D/C дисплея и тупо разрешать шину дисплея при обращениях по этой паре адресов. Микросхема памяти при подаче адреса ВНЕ её зоны адресов — запрещается сама и переходит в Z. Дисплей тоже имеет сигнал разрешения, который и подавать со схемы монтажного «И» .. сигналы чтения/записи вообще можно напрямую кинуть. И потом обращаться к дисплею из программы как показал выше — по указателю на эту выделенную пару адресов. что мешает?

Илон Маск рекомендует:  Что такое код ingres_connect

В итоге можно получить частоту работы с дисплеем (запись/чтение) вплоть до менее 10 тактов МК .. или около 2 мегабайта в секунду. Меня такое очень даже устроит..

В итоге планирую иметь И расширенную память И дисплей на одной шине. :)

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

Как я понял, тебе некуда деть лишние порты микроконтроллера. Тогда бери дисп. с возможностью вывода

по 18 битной шине и гони в него с максимальной скоростью. Без всяких посредников, в виде защелок и т. п.

Это максимальная скорость для твоего контроллера. Если нужно еще быстрее возьми более шустрый МК.

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

Нет, так будет медленнее: чтобы вывести точку потребуется выводить в три порта по байту и ещё дрыгать ногой «запись» отдельно .. 4 отдельные команды. Если оставить интерфейс 8 бит, то все равно 2. А так — одна. :)

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

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

Команда одна, а ты листинг выполнения этой команды смотрел. Команда для компилятора, а для

микроконтроллера то, что выдаст компилятор.

Напиши прогу записи в XRAM и посмотри ассемблеровский листинг. Тогда все иллюзии испарятся.

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

Писал уже, даже цельный тест.. запись в расширенную SRAM ровно ничем не отличается от записи во внутреннюю: *ptr = data — ровно 1 команда ассемблера. :)

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

Тогда перечитай матчасть. Даже во внутреннюю память за одну команду не записать.

Буду на пальцах. Для xram. Сначала нужно выставить в порт адрес. Затем выставить во второй

порт данные. Затем дать команду на запись. А так как у дисплея данные и адрес это один и тот же

порт, то xram прикрутить не получается.

Для дисплея. Выставить в порт адрес (команду), дать команду на запись. Выставить в порт данные и дать

команду на запись. Естественно переключая D/C.

При выводе потоковых данных, выставлять их в порт и давать команду на запись.

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

Это то о чем ты говоришь?

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

Да, примерно за это. У меня своя разводка такой платы на 512кб, у которой НЕ используется ни одна лишняя нога камня. У меня нет «лишних». :)

Вы путаете команды и такты процессора, так что Ваш совет, позволю себе переадресовать Вам :)

Да, во внутреннюю память команда записи ST пишет за ДВА ТАКТА и от 3 до 6 тактов во внешнюю. Настраивается в регистрах работы XRAM. Но, все-таки это ОДНА команда, а не 2. Аналогично, все остальные команды работы в памятью читают и пишут оперативу за 2 такта. Вызов/возврат процедур тоже и даже по 2 раза, ибо работают со словом — складывают/получают 2 байта в или со стека.

«Буду на пальцах. Для xram. Сначала нужно выставить в порт адрес. Затем выставить во второй порт данные. Затем дать команду на запись.»

Не надо, смешно выходит.. этим всем занимается ЦПУ, когда работает с памятью. Программно пишется крайне просто (уже писал): «Var = data;» В ряде случаев это компилируется ровно в 1 команду: «ST var, immediate», например. Компилятор полноценно и без прикрас легко адресует 64 килобайта оперативы. Её внутренней столько нет у Мег, поэтому ему выставляют принудительно предельный размер имеющегося ОЗУ в настройках плат. Можно исправить, делов-то: завести ещё одну плату.

«А так как у дисплея данные и адрес это один и тот же порт, то xram прикрутить не получается.»

. Почему у вас все так грустно? Вполне получается, я же написал «как»: вешаем ногу дисплея D/C на адрес памяти и .. получаем 2 ячейки: одну для данных и вторую для команд. Не? Что мешает? :)

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

А процессор сам определяет куда писать?

А время считается по командам или по тактам? Как двумя тактами выставить и адрес и данные на общую

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

Конечно, силами кумпилятора :)

Я веду речь за достижение скорости записи в дисплей в районе пары мегабайт в сек. — это потоковая запись больших блоков. Команда выставляется 1 раз на весь блок, нефатально. Попиксельно «куда-попало», конечно же потребуется что-то иное.

Поточно, типа такого:

Ну вот .. типа так. На цикл выделяется три команды: считать байт с автоинкрементом указателя, записать байт в ОЗУ дисплея по его адресу, декрементировать счетчик и повторить если ещё есть что отправить. Итого, ориентировочно 2+3+1+2 = 8 тактов или 2 мегабайта в секунду.

P.S. подправил: для байтового счетчика пакета отправки. По 3 байт на точку = 256/3 = 85 точек. Для больших пакетов будет 1.78Мб/сек, что мне тоже кажется очень нефигово.

P.P.S. Мне кажется несколько глупым отказываться от самой быстрой шины камня, если она есть.. :)

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

Отправить байт в озу занимает 2 такта.

Отправить байт в порт тоже 2.

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

2 такта в ОЗУ — только для внутреннего ОЗУ, на внешнее миниум 3 такта. :)

Для байтового интерфейса надо отправить 2 команды в порт: записать байт данных И дернуть ногой WR на каждый байт. А тут одна операция, но «по 3 такта». :) А кроме этого, Порт и ещё одна нога (WR) занимается целиком и полностью и «насовсем».

А тут совмещение полезного с приятным, которое особенно интересно, если внешнего ЗУ много: можно катать по 32 килобайта за операцию в моей версии или почти по 56кб в той, что по вашей ссылке (-8200байт внутреннего ЗУ Мега2560 на каждый сегмент по 64кб). Переключение страничек внешнего ЗУ — на общем фоне затрат — «мелочь» :)

В отличии от исходного варианта у меня НЕ занимаются никакие добавочные ноги камня, от слова «совсем», что тоже полезно.

Волнует только один вопрос: дисплей потянет такое насилие над собой или нет? Запись по прямому интерфейсу типа i8080 проходит на таких скоростях?

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

Нарисуй схему подключения контроллера к дисплею по шине xram

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

Чутка попозжа. Как только подниму свою Xram полноценно.

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

Есть кто шарит в экранах и их настройке? Что-то я не могу запустить экран на контроллере RM68120 который день. Вот этот, https://ru.aliexpress.com/item/4-3inch- . 75630.html

Все команды в нем описаны 2х байтными, например, SWRESET(0100h), но он поддерживает 8ми битный режим, да и половина команд на всех экранах одинаковая и до этого они были 1 байтными. Далее по тексту мы видим, что они и есть однобайтные, страница 49 даташита, понятно нарисована, что команды и их параметры 8 бит. Однако на команды 8 бит экран вообще не отзывается, но если ему послать SLPOUT (1100h): Sleep Out, то он просыпается и начинает реагировать за запись в память и чтение из нее(тоже на команды в старшем байте), причем это все, что он делает, показывать он не показывает, чтение состояния всегда говорит, что он выключен, включаться не желает, я просто задолбался с ним. Китаезы ничего не шарят, говорят, что они не инженеры, шлют всякую фигню вообще с других контроллеров. Хотя в отзывах есть чуваки, которые его смогли включить и поставили 5 звезд.

Ножки звонятся на + и на -(не напрямую, а через диод защитный), т.е. контакт с контроллером есть, обрывов нет, соединение верное, при чтении можно считать 0xFFFF, т.е. все выводы контачат, что ему нужно и что за замут с командами в старшем байте? Настроен он на 16 битный интерфейс при помощи перемычек на плате. Экран кошерный с емкосным тачем, тач работает, правда кроме того, что он дает прерывание от касания, ничего не проверял, без экрана это проблематично. Но мне совершенно не понятно, почему он не подает признаков жизни и еще на запрос ID он отвечает 0x0011, а по даташиту должен: 1й «фигня», второй 0x0000, третий 0x0080, четвертый 0x0000.

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

Судя по даташиту в 16 битном режиме команды в него пишутся побайтно (D0-D7). А вывод изображения в 16 битном режиме (D0-D16).

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

Чтение id тоже D0-D7.

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

Нашел и поднл свою тему http://arduino.ru/forum/apparatnye-voprosy/samodelnaya-mega2560-128a-s-p. , всё постепенно выложу в ней, в т.ч. и что получится с дисплеями и прямым доступом по этому интерфейсу.

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

Судя по даташиту в 16 битном режиме команды в него пишутся побайтно (D0-D7). А вывод изображения в 16 битном режиме (D0-D16).

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

Чтение id тоже D0-D7.

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

т.е. после инициализации светится белым, пишите картинку, а он не реагирует, а данные из памяти читаются?

В даташите есть команда 22h и 23h попробуй.

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

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

т.е. после инициализации светится белым, пишите картинку, а он не реагирует, а данные из памяти читаются?

В даташите есть команда 22h и 23h попробуй.

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

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Илон Маск рекомендует:  Что такое код dbplus_ropen

да, не работает по прежнему. Я вот не пойму откуда это, вроде нет такого в даташите

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

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

А инициализацию народ слизывает с прошивок готовых изделий. Китайцы не исключение.

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

Но мне совершенно не понятно, почему он не подает признаков жизни и еще на запрос ID он отвечает 0x0011, а по даташиту должен: 1й «фигня», второй 0x0000, третий 0x0080, четвертый 0x0000.

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

GFX, вы хотите на нем осциллограф сделать? http://radiokot.ru/forum/viewtopic.php?f=59&p=3118468 . мож тогда взять наиболее распространенные типы контроллеров. подобные IPS с емкостным тачем есть тож от 4″ . много уже времени убили на него, мож он не рабочий?

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

не сильно вдавался в даташит и разводку на плате. замечу:

0. самое главное — переключите его на 8бит и подключите через резисторы 10к к ардуине и прогоните читалкой v5.2 из comment-264976 , полученный лог выложите здесь (в окошке размещения кода , во вкладке доп. , поставьте галку свернуть код.

1. если применить ногодрыганье шины управления, (к примеру читалку) и шину данных не подключать / подключать , просто полазить по ней светодиодом (будут видны четкие лог.0 / лог.1 ) , то можно узнать не ошиблись ли при разводке с IM0. . т.е. убедиться в правильной размерности шины.

2. попробовать подключить питания диспа VCC и VCIO через резистор 50-100 ом , после команды просыпания (если она действительно его) , он должен больше потреблять , т.е. на резисторе должно осесть 50-500мв . Или отключить подсветку и мерить ток потребления шилда , должна быть заметна разница по потреблению сна/не сна

3. возможно дело в нужной правильной адресации при 8/16 бит. Т.е. попробовать его запустить на 8 бит. // для arduino UTFT как то попался на этом , пришлось либу на скорую руку допилить на 16 бит адресацию регистров comment-90767 и для некоторых 8ми бит не спроста существует тож переделка стандартной UTFT (turbo_8bit) , ибо просто тупо выставив в либе адресацию 8 бит — такой метод с некоторыми контроллерами не работает)

4. снять аккуратно дисп и промерить на его кондерах напряжения , после просыпания, должно появляться на них высокое положительное и отрицательное напряжение около 5в. если нет , то дисп не жилец. Заодно глянуть что у него на шлейфе написано.

5. по поводу ID , странно что он не вычитывается , возможно там другой контроллер, попробуйте подключить к ардуине через резисторы и прогнать читалку v5.2 на 8 и 16битном режиме диспа. неиспользуемые пины шины данных диспа — через резистокы 10к на GND . (учесть что у некоторых контроллеров при режиме 8 бит , они могут переходить и в старшие разряды DB8-DB15 железно или по желанию — по пину IM.. ) Т.е. попробовать считать регистры при режиме 8 бит диспа — подключиться к DB0-7 , потом DB8-15 . И в режиме 16бит к DB0-8 . Т.о. хорошо бы глянуть 3 лога .

6. по даташиту неиспользуемые пины на минус. но на время опытов лучше через 10ком.

8-bit interface: D[7:0] are used, D[23:8] should be connected to VSSI

16-bit interface: D[15:0] are used, D[23:16] should be connected to VSSI

7. чтот с маркировкой адресов у производителя странно , на стр. 142 в даташите RM68120 указано что ID должен быть по адресам 0400h

. Функция WriteComm

Функция WriteComm записывает символы в выходную очередь COM-порта. Прототип функции представлен ниже:

int WriteComm( int idComDev, const void FAR* lpvBuf,

Параметр idComDev содержит идентификатор COM-порта, используемого для передачи данных.

Параметр lpvBuf является дальним указателем на буфер, содержащий передаваемые данные.

Последний параметр функции cbWrite определяет количество символов в буфере lpvBuf, предназначенных для передачи.

Обратите внимание на то, что значение параметра cbWrite не должно быть больше, чем размер буфера lpvBuf

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

В случае возникновения ошибки ее причину можно выяснить с помощью функции GetCommError.

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

При открытии COM-порта функцией OpenComm следует указать размер выходной очереди не меньше, чем максимальный предполагаемый размер передаваемых строк.

В качестве примера использования функции WriteComm мы приводим исходный текст функции WriteCommChar, записывающей в выходную очередь один символ:

BOOL WriteCommChar(int nPortID, int nChar)

iErr = WriteComm(nPortID, (LPSTR)&nChar, 1))

Что такое качественный код и зачем нужен Code Review

У вашего проекта сменился разработчик и он говорит, что старый код невозможно использовать? Новая команда тратит много времени на решение простых задач? Как только удаётся справиться с одной проблемой, тут же ломается другое? Скорее всего, проблема в качестве кода.

Что такое качественный код

Не существует точного определения этого термина. Как правило, понимание того, как должен выглядеть качественный исходный код, основывается на многолетнем опыте специалиста. Некоторые программисты придерживаются абстрактного принципа KISS, который расшифровывается как Keep It Simple, Stupid! («Делай это проще, тупица!»). Отчасти этот метод проектирования справедлив, так как отражает главное правило хорошего кода — простота и ясность. Однако простоту часто путают с упрощением, поэтому о качестве исходного кода в профессиональной среде судят ещё по нескольким свойствам:

  • восприятие. Код не перегружен сложными конструкциями, поэтому его легко понять даже без дополнительной документации или комментариев;
  • сопровождение. В продуманный код легко вносить изменения: менять конфигурации или даже платформы;
  • расширение. В него просто добавить новую функциональность без риска сломать алгоритм кода. Даже если возникнут неполадки, их можно быстро устранить;
  • передача. Хороший код можно передать другим разработчикам для поддержки или доработки, и у них не возникнет трудностей с его прочтением;
  • покрытие тестами. Чем выше процент покрытия кода тестами, тем больше вероятность избежать ненужных багов в будущем.

Чтобы облегчить понимание кода в профессиональной среде, у каждого языка программирования есть свой Code Style — стандарт оформления. Именно он диктует правила: где ставить пробелы или скобки, как отделять строки или называть переменные. Может показаться, что эти нюансы не так важны, однако их соблюдение значительно облегчает понимание кода для тех, кто видит его впервые.

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

Как повысить качество кода?

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

Этот процесс состоит из нескольких этапов.

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

На втором этапе члены команды, или ревьюеры, отсматривают код и оставляют свои комментарии. Некоторые компании, практикующие Code Review, фокусируются только на поиске багов, но для реального повышения качества кода нужно также указывать на архитектурные недочёты, неправильное использование инструментов и плохой стиль написания — непонятный или плохо воспринимаемый.

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

Дальше всё повторяется сначала и происходит систематически — каждый раз, когда в код вносится новая порция изменений.

Плюсы Code Review

Техника Code Review помогает на ранних стадиях находить некоторые ошибки и избавляться от непонятных и запутанных решений. В работе над кодом участвует не один человек, а целая команда, поэтому часто может появиться свежий взгляд со стороны.

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

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

Благодаря Code Review снижается так называемый , или «фактор автобуса». Так называют число, означающее количество участников команды, которых должен сбить автобус, чтобы все знания о проекте были потеряны. К примеру, в проекте занято четыре человека, если два из них по причинам уйдут, то оставшиеся смогут закончить работу, а если команду покинут трое — последний участник не справится в одиночку.

Минусы Code Review

По сути, главный и единственный минус этого процесса — его длительность. Всем участникам Code Review приходится тратить время на то, чтобы посмотреть и при необходимости прокомментировать код, а разработчику — на исправление ошибок.

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

Когда использовать Code Review?

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

К примеру, нет смысла проводить Code Review при разработке прототипа или MVP — минимально жизнеспособного продукта. Главная задача такого проекта — получить от пользователей обратную связь, чтобы построить гипотезы для дальнейшего развития. Структура этих приложений делается максимально простой, и в дальнейшем код всё равно предстоит переписывать кардинальным образом.

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

Илон Маск рекомендует:  [атрибут=значение] в CSS

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

Помимо этого текста вы можете посмотреть ролик из нашего видеоблога, в котором я подробно рассказал о качественном коде и Code Review:

Как делают перевод с протекцией

Содержание статьи

  • Как делают перевод с протекцией
  • Как вернуть деньги с Яндекс.Деньги
  • Как отследить денежный перевод

Некоторые платежные системы, такие как Webmoney или Яндекс.Деньги предоставляют своим пользователям по-своему уникальную возможность — перевод платежа с протекцией. Сервис Webmoney позволяет защитить денежные средства не только соответствующим кодом, но и другим довольно хорошим способом — перевод с защитой по времени. Перевод с защитой по времени можно осуществить следующим образом: пользователю достаточно только лишь подождать определенное время, после которого будет отправлена определенная сумма. Для того чтобы воспользоваться подобной функцией необходимо поставить галочку в соответствующем поле, перед отправкой платежа и указать срок протекции. Что касается непосредственно кода протекции, то тут все немного сложнее.

Что такое код протекции?

Сам по себе код протекции, как можно догадаться из самого названия — обычный пароль (набор цифр и букв), использование которого обязательно для завершении некоторых перевод, осуществленных с помощью этой функции. Денежный перевод с протекцией наиболее целесообразно использовать при: выводе средств с электронного кошелька, обналичивании средств, пополнении, покупки Webmoney, покупке wmr или wmu и др.

Как осуществить перевод с протекцией?

Для того чтобы создать денежный перевод с протекцией, пользователю достаточно выбрать кошелек получателя. В появившемся окне ввести сумму перевода, а в графе «Перевод с протекцией» поставить галочку и установить сам пароль, после чего отправить денежный перевод на указанный электронный кошелек. Если получателю придет соответствующее уведомление о том, что была принята какая-либо сумма, то после запуска этого сообщения он увидит поле для ввода кода протекции. Отправитель должен отправить этот код получателю и в случае успешного выполнения, вся сумма поступит на его счет.

Кроме того, в настройках электронной системы Webmoney, пользователь может выбрать специальный параметр, с помощью которого программа будет автоматически создавать пароли для подобных переводов с протекцией. Для запуска подобной опции необходимо зайти в меню «Инструменты», а затем нажать «Параметры программы». В появившемся окне требуется выбрать пункт «Безопасность» и нажать на «Автоматическая генерация кода протекции». Если все будет выполнено правильно, то код протекции будет создаваться автоматически, без участия пользователя.

Второй фактор: коды аутентификации и резервные коды

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

Код действует 30 секунд, и его нельзя использовать повторно. Это повышает защиту аккаунта, к которому подключен второй фактор защиты.

Храните резервные коды и секретный ключ в надёжном месте. Никому не передавайте и не показывайте их.

Чтобы получать коды аутентификации, установите на своё мобильное устройство приложение Google Authenticator и подключите второй фактор защиты аккаунта.

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

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

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

При помощи резервных кодов вы в любой момент можете восстановить пароль и доступ к аккаунту, а также отключить второй фактор защиты.

Вы всегда можете создать новые резервные коды и просмотреть активные резервные коды.

Обязательно сохраните резервные коды и никому не показывайте и не передавайте их.

Один резервный код можно использовать только один раз.

Когда вы введёте резервный код, соответствующее сообщение отобразится в меню уведомлений. В сообщении будет указано, с какого IP-адреса и для какой операции был использован код.

Такое же сообщение придёт на электронную почту, к которой привязан аккаунт.

Как только у вас останется меньше трёх кодов, вы получите уведомление:

Такое же уведомление появится и в Личном кабинете:

  1. Войдите в Личный кабинет, найдите поле «Второй фактор защиты» и нажмите на иконку с вопросительным знаком.
  2. Нажмите «Показать оставшиеся резервные коды».
  3. Введите код аутентификатора или резервный код и нажмите «Активировать».
  1. Войдите в Личный кабинет, найдите поле «Второй фактор защиты» и нажмите на иконку с вопросительным знаком.
  2. Нажмите «Показать оставшиеся резервные коды».
  3. Нажмите «Создать новые резервные коды».

После создания резервных кодов старые коды перестанут работать.
Генерировать новый набор резервных кодов можно не чаще двух раз за 15 минут.

Что такое программный код, применение, ошибки

Любая программа или онлайн-сервисы, например, Word, Microsoft Windows, WhatsApp или же браузер, которые ежедневно запускают сотни миллионов человек, так или иначе, состоят из особых инструкций. Или специального программного кода, который понятен машине, говорит, что ей делать или, наоборот, не делать. Или как правильно реагировать на действия пользователя. Что такое программный код, будет разобрано в этой статье.

Описание

Программный код программы — это текст, выполненный на особом языке, понятном машине. Он может выполняться непосредственно по тексту с помощью интерпретатора или транслироваться в особый вид с помощью компилятора.

Исходный код программы может состоять из нескольких файлов. При этом все они должны быть одинакового формата. Текст программы, содержащейся в них, должен быть написан на одном и том же языке. Правда, могут встречаться и исключения. Например, в веб-разработке в файле страницы могут содержаться несколько различных языков программирования и стандартов. В зависимости от сложности проекта, могут присутствовать такие языки и технологии, как PHP, HTML, JavaScript, Java и другие.

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

Качество кода

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

  • Читаемость кода. Одного взгляда на него должно хватать, чтобы обобщенно понять, что реализуется участком кода.
  • Присутствие понятных и ёмких комментариев. Данный параметр очень сильно влияет на читаемость, легкость в отладке, тестирование поддержки и устранение ошибок программного кода.
  • Низкая сложность.
  • Оптимизация кода. Организовать его стоит таким образом, чтобы программа использовала как можно меньше системных ресурсов, таких как память, время процессора и пространство жёсткого диска.
  • Отсутствие мусора. То есть не используемых переменных или блоков кода, в которой никогда не заходит управление программой.

Вредоносный программный код

Помимо полезных программ, существуют такие, которые могут нанести вред системе или даже оборудованию. Как правило, пишется такой код людьми, которые заинтересованы в какой-либо выгоде от происходящего процесса. Например, программы, которые могут похищать личные данные с компьютеров пользователей. Ими могут быть номера платёжных карт, паспортные данные, или какая-либо другая конфиденциальная информация. Другие могут просто оказывать влияние на работу системы, тем самым вызывая сбои и мешая полноценной функциональности.

Рекомендации по написанию хорошего кода

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

В частности, он предлагает всегда комментировать свой программный код. Что такое комментарий? Это понятное и краткое описание того, что происходит в данной строке кода или функции. Дело в том, что разработка определённой программы может затянуться на месяц или вообще приостановиться на некоторое время. Вернувшись к работе над проектом через пару месяцев, даже опытному программисту будет сложно разобраться в своей же программе. Но подробные комментарии смогут восстановить цепочку событий и поведение кода.

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

Имена переменных и выявление ошибок

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

Очень важно уделять большое внимание своевременному устранению ошибок. Что такое программный код, который исполняется идеально? Это код, в котором нет ошибок. То есть любое ветвление цикла или изменение переменной, или вовсе какие-либо непредвиденные действия пользователя, всегда приведут к ожидаемому результату. Это достигается за счёт тестирования готового программного продукта по несколько раз.

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

Оптимизация имеет колоссальное значение для написания работоспособной программы, которая будет экономно использовать ресурсы компьютера и при этом не допускать ошибок выполнения программного кода. Что такое оптимизированная программа? Это продукт, который способен выполнять весь заявленный функционал, ведя себя при этом «тихо» и экономно.

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

Заключение

Что такое программный код? Говоря простым языком, это набор инструкций и понятий для компьютера. Он содержит текст, который компилятор или интерпретатор могут превратить в понятный машине язык. То есть, по сути, программный код — это посредник между человеком и компьютером, который упрощает их взаимоотношения.

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL