ПредишенСледващото

Спецификация на протокола WAKE

Таблица 1. Контролни кодове WAKE протокол.

Транспониран Frame End

Транспониран Frame Escape

Таблица 2. Подмяна на данни байта ESC-последователности.

Таблица 3. Структура WAKE пакет.


FEND: Управление FEND код (C0h) е знак за началото на пакета. Поради плънка, кодът никъде другаде в потока от данни не е намерен, която позволява на всяка ситуация, за да се определи еднозначно началото на пакета.

CMD: Byte отбор трябва винаги да има нула значителна малко:


По този начин, кодът за е 7-битов, която може да предава до 128 различни отбори. Командване кодове са избрани произволно, в зависимост от нуждите на приложението. Препоръчително е да се използват няколко стандартни командни кодове:

Таблица 4. Стандартни кодове Събуждане протоколни команди.

Кодът за грешка трансфер

Възстановяване на сума предаден пакет

Искане за информация за устройството

Кодове другите отбори са избрани в зависимост от нуждите за приложение. Командите се обикновено няколко параметри се предават по-нататък под формата на пакет от данни.
Тъй като кодът за винаги е нула важния бит, кодът никога не е същото като кодовете за контрол. Така че никога не се извършва при предаването на плънка команда.

N: брой байт данни има стойност, равна на броя на предадените байтове за информация:


По този начин, броят на код данни се 8 бита, в резултат на един пакет може да съдържа до 255 байта от данни. Стойността на N не счита, режийни байта грижат пакет, ADDR, CMD, N и КРС. В резултат на пълнеж действителната дължина пакет може да се увеличи. Стойността на N не счита този факт и отразява количеството на полезни байта данни (т.е. стойността на N винаги е такова, като че ли плънка не е извършена). Ако предава командата не е включена лампа след това предава N = 00ч и данни байта са пропуснати.

Ако трябва да се премине на стойност N, равна на или по C0h гръдна, плънката се прави, т.е. ESC трансфер последователност (вж. Таблица 2). Въпреки това, с такива големи стойности на N, дължината на пакета е толкова голям, че удължаване си за друг байт почти незабележимо.

Данни1. DataN: байта данни, броят на които се определя от стойността на Н. Когато N = 00h не байта данни. байта данни могат да бъдат никаква стойност, освен FEND (C0h) и FESC (гръдна). Ако трябва да премине една от тези стойности, плънката се прави, т.е. ESC трансфер последователност (вж. Таблица 2), състояща се от код контрол и FESC TFEND код (TFESC).

Таблица 5. размер WAKE протокол съкращения.

FEND, CMD, 00h, CRC

FEND, ADDR, CMD, 00h, CRC

FEND, ADDR, CMD, 00h

FEND, ADDR, CMD, 0Ah, <10 bytes of data>, CRC

FEND, ADDR, CMD, 32h, <50 bytes of data>, CRC

FEND, ADDR, CMD, 7Fh, <127 bytes of data>, CRC

FEND, CMD, 7Fh, <127 bytes of data>, CRC

FEND, ADDR, CMD, 7Fh, <127 bytes of data>

FEND, CMD, 7Fh, <127 bytes of data>


От страна на протокола се прилага в компютъра wsp32.dll динамична библиотека (по избор RS-232) и wusb32.dll (USB версия с шофьор от FTDI). Библиотеките могат да се използват за разработване на програми за комуникация, в който и да е език. Следващото описание предполага, че библиотеката използва от програма, написана на C ++. Header wsp32.dll библиотека файл за използване с RS-232 е показан по-долу:
булев AccessCOM (Чар * Р) - Тази функция проверява дали наличността порт. Като параметър премина към порт (например, "COM1"). Връща истина, ако достъпът до пристанището.

булев OpenCOM (Чар * Р, DWORD бода) - функция отваря порт. Както параметри се предава порт име (например, "COM1") и скоростта на обмен, който може да бъде един от стандартните стойности (например, 115,200). Връща TRUE при успех. Функция задава DTR линия на нивото на-12V, а нивото на RTS линия на + 12V.

булев CloseCOM (свободен) - функция затваря пристанището. Връща TRUE при успех.

BOOL SetModLns (DWORD F) - функция изпълнява контролни линии RTS и DTR. Връща TRUE при успех. Параметърът е същата като EscapeCommFunction функцията API.

BOOL GetModLns (LPDWORD LPD) - функция прочитания контрол модем линии CTS и DSR. Връща TRUE при успех. Параметърът е същата като функция API на GetCommModemStatus.

булев PurgeCOM (свободен) - функция изчиства буферните COM-портове и прекъсва текущата операция на приемане / предаване. Връща TRUE при успех.

BOOL FlushCOM (свободен) - функция изчиства COM-порт буфер, в очакване на завършване на предаването. Връща TRUE при успех.

булев GetMaskCOM (LPDWORD lpEvtMask) - функция чете маската събитие на COM-порт. Връща TRUE при успех. Параметърът е същата като функция API на GetCommMask.

булев SetMaskCOM (DWORD EvtMask) - задава функцията маска връща истина, ако успешно. Параметърът е същата като SetCommMask функцията API.

булев WaitEventCOM (LPDWORD lpEvtMask) - функция се използва, да се изчака за събитието на COM-порт. Връща TRUE при успех.

BOOL RxFrame (DWORD да, неподписан овъгляване ADD, грозен Чар CMD, грозен Чар N, грозен Чар * Данни) - функция се получава събуждане пакет. Връща TRUE при успех.

BOOL TxFrame (неподписан овъгляване ADDR, неподписан овъгляване CMD, неподписан знак N, неподписан знак * данни) - функция предава събуждане опаковката. Връща TRUE при успех.

wusb32.dll библиотека съдържа по-малък набор от функции. Имената на функциите не съответстват на два DLL, който ви позволява да се свърже с един проект едновременно както на библиотеката, като същевременно се гарантира работата като RS-232 и чрез USB. wusb32.dll библиотека изисква за своята работа на снимачната площадка на пряк-шофьор FTDI (тестван с шофьор версия 6.1.20) и присъствие FTD2XX.dll библиотека (библиотека е тествана версия 2.1.04). Header wusb32.dll библиотека файл за използване чрез USB е показан по-долу: булев AccessUSB (инт DevNum) - функция проверява наличието на USB порт. Параметърът предава номера на порта (за една единица обикновено DevNum = 0). Връща истина, ако достъпът до пристанището.

булев OpenUSB (INT DevNum, DWORD бода) - функция отваря порт. Като параметри се предават порт и скорост на предаване. Скоростта е само важно, когато се работи с FT232BM.

булев CloseUSB (свободен) - функция затваря пристанището. Връща TRUE при успех.

BOOL PurgeUSB (свободен) - функция изчиства порт буфер и прекъсва текущата операция на приемане / предаване. Връща TRUE при успех.

BOOL RxFrameUSB (DWORD да, неподписан овъгляване ADD, грозен Чар CMD, грозен Чар N, грозен Чар * Данни) - функция се получава събуждане пакет. Връща TRUE при успех.

BOOL TxFrameUSB (неподписан овъгляване ADDR, неподписан овъгляване CMD, неподписан знак N, неподписан знак * данни) - функция предава събуждане опаковката. Връща TRUE при успех.

За тестване на прилагането използване след протокол служи събуждане приложение. от които ръчно предава генерираните рамки и получаване на отговор устройство. прозорец за събуждане! Това е показано на фиг. 1.

Фиг. 1. събуждане програма прозорец!

Таблица 6: Стандартни код за грешка събуждане протокол.

Устройството не реагира

Определянето на кодове на стандартна грешка:
  • Err_No - няма грешка, командата се изпълнява правилно
  • Err_Tx - комуникационна грешка. Този код за грешка може да се прехвърля към роб C_Err пакета с команда код. В действителност, този пакет е "приемане грешка майстор пакет". Друга ситуация, в която това може да се предава на кода за грешка е споделяне грешка с други роб роб микроконтролери.
  • Err_Bu - устройството е заето. Тази грешка се появява, когато се опитва да тече съветника в роба всеки процес, който все още не е приключило, тъй като предишния план. Пример - "ADC зает".
  • Err_Re - устройството не е готова. Този код за грешка може да се използва в командния група, с които капитанът урните готовността роб. Такива команди връщат Err_Re код, докато устройството (например, ADC) не е готово, и след това се връща Err_No. Този код може да бъде върнат към искането за командване и данни, ако те все още не са готови. След това е възможно да се направи, без специално проучване команди готовност.
  • Err_Pa - грешен отбор. Тази грешка се появява, когато съветника опитва да извърши в роб всяка функция с невалидни параметри. В този случай, вместо пакети данни, робът се връща един пакет с този код за грешка.
  • Err_Nr - устройството не реагира. Тази грешка може да възникне, ако устройството роб има "второстепенни" други устройства, които не реагират (например, дезактивира).
Този набор от грешки може да се променя в зависимост от нуждите на конкретното приложение. Като пример за специфичен апарат протокол WAKE описва команди криостат контрол система единица CTC-25N.

wake.pdf (225 Kb) - WAKE спецификация протокол PDF формат.

wakeup.zip (271 Kb) - архив с събуждане на програмата! (V1.00) и wsp32.dll библиотека.

wusource.zip (35 Kb) - архив с изходния код на събуждане на програмата! (V1.00, C ++ Builder 5).

w51.zip (3 Kb) - източник на текстов файл на събуждане протокол изпълнение MCS-51 (ASM).

wavr.zip (3 Kb) - архив с практически пример WAKE Протокола от изходния код на AVR (ASM).

wake_c.zip (4 Kb) - източник на текстов файл на AVR изпълнение WAKE протокол (IAR С).

CTC-25n.pdf (126 Kb) - пример за приложение протокол WAKE контрол криостат единица.

wakeusb.zip (302 Kb) - архив с програма WakeUSB (V1.00) и wusb32.dll библиотека.

wusb.zip (342 Kb) - библиотека и wusb32.dll FTD2XX шофьор от FTDI.

Подкрепете проекта - споделете линка, благодаря!