nTotalCharacters COM_COUNT(<nComPort>) lOldDTRStatus COM_DTR(<nComPort>,[<lNewDTRStatus>]) lClear COM_FLUSH(<nComPort>) lOldHandshake COM_HARD(<nComPort>,<lNewHandshake>,[<lDTR/DSR>]) lInitialized COM_INIT(<nComPort>,[<nBaudRate>],[<cParity>], [<nDataLength>],[<nStopBits>]) nMaxCom COM_NUM() lStatus COM_OPEN(<nComPort>,<notused>,<notused>,<notused>, [<lRTSCTS>],[<lXONXOFF>],[<lDebug>]) cData COM_READ(<nComPort>,[<nLength>]) lOldRTSStatus COM_RTS(<nComPort>,[<lNewRTSStatus>]) nLength COM_SEND(<nComPort>,<cString>) lDeleted COM_SFLUSH(<nComPort>) lOldHandshake COM_SOFT(<nComPort>,[<lNewHandshake>],[<cXONchar>],[<cXOFFchar>]) nOldTimeout COM_TIMEOUT(<nComPort>[,<nTimeout>])
В категории Serial I/O находятся описания функций для коммуникации посредством COM-портов. Эти функции основаны на многоплатформной библиотеке EZV24 http://libezV24.sourceforge.net/.
Для использования необходимо линковать библтотеку clip-com:
clip -e test.prg -lclip-com
COM_COUNT(<nComPort>) --> nTotalCharacters
Эта функция позволяет узнать число доступных символов в буфере приема. Это позволяет определить, сколько символов может быть прочитано функцией COM_READ().
Если функция вызывается для закрытого порта, возвращается -1.
<nComPort> | - Определяет номер порта. |
Returns : | Возвращает число доступных символов в буфере приема. |
See also : | COM_DTR() COM_RTS() COM_SOFT() COM_TIMEOUT() COM_HARD() COM_NUM() |
COM_DTR(<nComPort>,[<lNewDTRStatus>]) --> lOldDTRStatus
COM_DTR() запрашивает или устанавливает статус сигнала DTR. Если второй параметр не указан, статус сигнала не изменяется.
Функция COM_CLOSE() сбрасывает сигнал DTR. Однако, COM_OPEN не устанавливает DTR автоматически.
<nComPort> | - Определяет номер порта. |
<lNewDTRStatus> | - Определяет статус DTR: .T. для активации сигнала, .F. для сброса сигнала. Если параметр не задан, статус DTR не изменяется. |
Returns : | Возвращается .T. если DTR активен, .F. если нет. Если задан параметр <lNewDTRStatus>, возвращается значение сигнала перед вызовом функции. |
See also : | COM_SOFT() COM_RTS() COM_TIMEOUT() COM_HARD() COM_NUM() COM_COUNT() |
COM_FLUSH(<nComPort>) --> lClear
Эта функция позволяет очистить все символы в буфере приема.
COM_FLUSH() гарантирует полную очистку буфера приема. Однако, новые символы могут быть приняты между вызовом COM_COUNT() и COM_READ().
<nComPort> | - Определяет номер порта. |
Returns : | В случае успеха возвращает .T.. |
See also : | COM_INIT() COM_OPEN() COM_READ() COM_SEND() COM_SFLUSH() |
COM_HARD(<nComPort>,<lNewHandshake>,[<lDTR/DSR>]) --> lOldHandshake
Размер буфера приема всегда ограничен. Для того чтобы предотвратить переполнение и потерю символов, используется аппаратое или программное управление потоком. При аппаратном управлении, порт использует сигнал RTS для остановки передачи. Когда аппаратный буфер приемника наполняется до 75%, RTS активизируется и останавливает передачу. Как только заполнение буфера снижается до 50%, сигнал RTS сбрасывается и разрешает передачу. Некоторые принтеры используют другой сигнал (DTR) вместо RTS и DSR вместо CTS. В этом случае необходимо установить параметр <lDTR/DSR> в .T.
Функция работает как при приеме, так и при передаче.
Если вы используете аппаратное управление потоком, сигнал RTS не должен устанавливаться вручную с использованием функций COM_RTS() или COM_MCR().
<nComPort> | - Номер порта (от 1 до N). |
<lNewHandshake> | - Определяет включение (.T.) или выключение (.F.) аппаратного управления потоком. |
<lDTR/DSR> | - Определяет, должно ли использоваться управление при помощи сигналов DTS/DSR (.T.) или RTS/CTS (.F.). |
Returns : | Когда функция вызывается только с параметром <nComPort>, возвращается .T. если аппаратное управление потоком включено, и .F. если выключено. Когда передается параметр <lNewHandshake>, функция возвращает предыдущий статус. |
See also : | COM_DTR() COM_RTS() COM_SOFT() COM_TIMEOUT() COM_NUM() COM_COUNT() |
COM_INIT(<nComPort>,[<nBaudRate>],[<cParity>], [<nDataLength>],[<nStopBits>]) --> lInitialized
Для иницализации открытого порта требуется четыре параметра. Это скорость порта в бодах (бит в секунду), число битов данных, четность, и число стоп-битов. По умолчанию выбираются следующие параметры: 9600 бод, 8 бит данных, проверка на четность отсутствует, 1 стоп-бит. Важно отметить, что любой из этих параметров может быть изменен, пока порт не закрыт. При использование этой функции данные и регистры статуса модема (DTR и другие) не затрагиваются.
Порт должен быть предварительно открыт. Инициализация не открытого порта невозможна.
Если любые из четырех параметров порта не заданы, либо заданы некорректно, используются значения по умолчанию: 9600 бод, без проверки на четность, 8 бит данных, 1 стоп-бит.
<nComPort> | - Определяет номер порта для инициализации |
<nBaudRate> | - Определяет битовую скорость для порта. Возможные значения 300, 600, 1200, 2400, 4800, 9600 19200 38400 бод Значение по умолчанию 9600 |
<cParity> | - Задает четность в виде: (E)ven, (O)dd, (M)ark, (S)pace, or (N)one. Значение по умолчанию (N)one. |
<nDataLength> | - Определяет число бит данных; возможные значения 7 или 8 бит. Значение по умолчанию - 8. |
<nStopBits> | - Определяет число стоп битов; 1 или 2. Значение по умолчанию 1. |
Returns : | Если порт успешно инициализирован, возвращает .T. |
See also : | COM_FLUSH() COM_OPEN() COM_READ() COM_SEND() COM_SFLUSH() |
COM_NUM() --> nMaxCom
Эта функция позволяет узнать максимальное число последовательных портов в системе. Однако, она не гарантирует доступность портов. Например, если функция вернула 3, то COM2 может отсутствовать или быть недоступен. Реальная доступность порта проверяется функциями COM_OPEN() или COM_INIT().
Returns : | Возвращает кол-во доступных COM-портов. |
See also : | COM_DTR() COM_RTS() COM_SOFT() COM_TIMEOUT() COM_HARD() COM_COUNT() |
COM_OPEN(<nComPort>,<notused>,<notused>,<notused>, [<lRTSCTS>],[<lXONXOFF>],[<lDebug>]) --> lStatus
Эта функция открывает порт последовательного интерфейса.
<nComPort> | - Номер порта (от 1 до N). |
<lRTSCRS> | - Разрешает или запрещает использование аппаратного управления потоком символов. |
<lXONXOFF> | - Разрешает или запрещает использование программного управления потоком символов. |
<lDebug> | - Включает отладочный вывод библиотеки. |
Returns : | Возвращает .T. если порт был успешно открыт. |
See also : | COM_FLUSH() COM_INIT() COM_READ() COM_SEND() COM_SFLUSH() |
COM_READ(<nComPort>,[<nLength>]) --> cData
Принимаемые символы запоминаются во внутреннем буфере. Существует возможность определить число символов в буфере, и чтения одного, нескольких, или всех символов. Если не задан параметр <nLength>, то читаются все доступные символы.
Учтите, что порт может принять дополнительные символы между вызовами COM_COUNT() и COM_READ().
<nComPort> | - Определяет порт для чтения. |
<nLength> | - Определяет число символов для чтения. По умолчанию - все символы. |
Returns : | Возвращается строка, содержащая заданное число принятых символов. |
See also : | COM_FLUSH() COM_INIT() COM_OPEN() COM_SEND() COM_SFLUSH() |
COM_RTS(<nComPort>,[<lNewRTSStatus>]) --> lOldRTSStatus
COM_RTS() запрашивает или устанавливает статус сигнала RTS. Если второй параметр не указан, статус сигнала не изменяется.
Функция COM_CLOSE() сбрасывает сигнал RTS. Однако, COM_OPEN не устанавливает RTS автоматически.
<nComPort> | - Определяет номер порта. |
<lNewRTSStatus> | - Определяет статус RTS: .T. для активации сигнала, .F. для сброса сигнала. Если параметр не задан, статус RTS не изменяется. |
Returns : | Возвращается .T. если RTS активен, .F. если нет. Если задан параметр <lNewRTSStatus>, возвращается значение сигнала перед вызовом функции. |
See also : | COM_SOFT() COM_DTR() COM_TIMEOUT() COM_HARD() COM_NUM() COM_COUNT() |
COM_SEND(<nComPort>,<cString>) --> nLength
Передает один или более символов через выбранный порт.
<nComPort> | - Определяет порт передачи. |
<cString> | - Определяет строку для передачи через порт. Если необходимо передать один символ, второй параметр может быть числовым и задавать ASCII код символа. |
Returns : | Если передача была успешной, возвращает 0. Если передача была неполной, возвращает число непереданных символов. |
See also : | COM_FLUSH() COM_INIT() COM_OPEN() COM_READ() COM_SFLUSH() |
COM_SFLUSH(<nComPort>) --> lDeleted
Эта функция удаляет все символы из буфера передачи, которые еще не переданы.
<nComPort> | - Определяет номер порта. |
Returns : | В случае успеха возвращает .T.. |
See also : | COM_FLUSH() COM_INIT() COM_OPEN() COM_READ() COM_SEND() |
COM_SOFT(<nComPort>,[<lNewHandshake>],[<cXONchar>],[<cXOFFchar>]) --> lOldHandshake
При использовании модемного соединения, а также в некоторых других случаях, аппаратное управление потоком не всегда возможно. Поэтому в таких случаях применяется программная реализация. Когда буфер приема заполняется на 75%, передается XOFF символ. При приеме которого удаленная станция должна приостановить пердачу.Как только наполнение буфера снижается до 50%, передается XON символ, разрешающий передачу удаленной станции.
Когда вы передаете бинарные данные, программное управление потоком должно быть отключено.
<nComPort> | - Определяет номер порта. |
<lNewHandshake> | - Включает (.T.) или выключает (.F.) программное управление потоком. Если этот параметр опущен, функция возвращает текущие установки. |
<cXONchar> | - Определяет символ, используемый как XON. Значением по умолчанию является ASCII 19 - Ctrl-S. |
<cXOFFchar> | - Определяет значение символа, используемого как XOFF. Значением по умолчанию является ASCII 17 - Ctrl-Q. |
Returns : | Функция возвращает предыдущее значение. |
See also : | COM_DTR() COM_RTS() COM_TIMEOUT() COM_HARD() COM_NUM() COM_COUNT() |
COM_TIMEOUT(<nComPort>[,<nTimeout>]) --> nOldTimeout
Все фукции чтения могут использовать механизм таймаута при ожидании символов. Если таймаут первышен, функция обрывает ожидание.
Длительность таймаута определяется параметром TenthOfSeconds. Значение задается в десятых долях секунды.
<nComPort> | - Номер порта (от 1 до N). |
<nTimeout> | - Определяет таймаут операций в единицах 1/10 секунды. |
Returns : | Возвращает предыдщее значение таймаута. |
See also : | COM_DTR() COM_RTS() COM_SOFT() COM_HARD() COM_NUM() COM_COUNT() |
Пред. | Начало | След. |
TERMINAL/IO | Уровень выше | TASK |