From OpenSCADAWiki
Line 5: | Line 5: | ||
<li>''bool cfgSet(string nm, ElTp val)'' [<span style='color:red'>доступ до відповідної підсистеми</span>] — встановлює конфігураційне поле ''nm'' об'єкту у значення ''val''.</li> | <li>''bool cfgSet(string nm, ElTp val)'' [<span style='color:red'>доступ до відповідної підсистеми</span>] — встановлює конфігураційне поле ''nm'' об'єкту у значення ''val''.</li> | ||
<li>''string status()'' — рядок статусу транспорту.</li> | <li>''string status()'' — рядок статусу транспорту.</li> | ||
− | <li>''bool start( bool vl = EVAL, int tm = 0 )'' — повертає статус "Виконання", запускає/зупиняє за ''vl'' (якщо не | + | <li>''bool start( bool vl = '''EVAL''', int tm = 0 )'' — повертає статус "Виконання", запускає/зупиняє за ''vl'' (якщо не '''EVAL'''). Для запуску можна вказувати особливий таймаут ''tm''.</li> |
<li>''string addr( string vl = "" )'' — адреса транспорту, встановлює у непорожнє значення ''vl''.</li> | <li>''string addr( string vl = "" )'' — адреса транспорту, встановлює у непорожнє значення ''vl''.</li> | ||
<li>''string timings( string vl = "", isDef = true )'' — таймінги транспорту, встановлює у непорожнє значення ''vl'' та по замовченню для ''isDef''. </li> | <li>''string timings( string vl = "", isDef = true )'' — таймінги транспорту, встановлює у непорожнє значення ''vl'' та по замовченню для ''isDef''. </li> | ||
− | <li>''int attempts( int vl = EVAL )'' — спроб підключень транспорту, встановлює у не-EVAL значення ''vl''.</li> | + | <li>''int attempts( int vl = '''EVAL''' )'' — спроб підключень транспорту, встановлює у не-'''EVAL''' значення ''vl''.</li> |
− | <li>''ElTp conPrm( string id, ElTp val = EVAL, string cfg = "" )'' — загальне поводження із параметром часу підключення ''id'' з встановленням у значення ''val'' за наявності; запит конфігураційного параметру часу підключення із реєстрацією конфігурації ''cfg'' у форматі "{SRC}\n{NAME}\n{HELP}" вперше.</li> | + | <li>''ElTp conPrm( string id, ElTp val = '''EVAL''', string cfg = "" )'' — загальне поводження із параметром часу підключення ''id'' з встановленням у значення ''val'' за наявності; запит конфігураційного параметру часу підключення із реєстрацією конфігурації ''cfg'' у форматі "{SRC}\n{NAME}\n{HELP}" вперше.</li> |
<li>''bool setConPrm( string id, ElTp val )'' — встановлення параметру часу підключення ''id'' у значення ''val'', лише для сумісності.</li> | <li>''bool setConPrm( string id, ElTp val )'' — встановлення параметру часу підключення ''id'' у значення ''val'', лише для сумісності.</li> | ||
<li>''string messIO( string mess, real timeOut = 0, int inBufLen = -1 );'' — відправляє повідомлення ''mess'' через транспорт з таймаутом очікування відповіді ''timeOut'' (у секундах) та читає відповідь (буфер) розміром ''inBufLen'' байт. У випадку нульового таймауту цей час береться з налаштувань вихідного транспорту. Негативний час ''timeOut'' (< -1e-3) вимикає роботу транспорту у режимі запит/відповідь та дозволяє незалежно читати/писати у буфер ВВ, з таймаутом читання ''timeOut'' у абсолютному значенні. Для негативного ''inBufLen'' розмір буферу встановлюється у STR_BUF_LEN(10000), а "0" вимикає читання взагалі.<br/> | <li>''string messIO( string mess, real timeOut = 0, int inBufLen = -1 );'' — відправляє повідомлення ''mess'' через транспорт з таймаутом очікування відповіді ''timeOut'' (у секундах) та читає відповідь (буфер) розміром ''inBufLen'' байт. У випадку нульового таймауту цей час береться з налаштувань вихідного транспорту. Негативний час ''timeOut'' (< -1e-3) вимикає роботу транспорту у режимі запит/відповідь та дозволяє незалежно читати/писати у буфер ВВ, з таймаутом читання ''timeOut'' у абсолютному значенні. Для негативного ''inBufLen'' розмір буферу встановлюється у STR_BUF_LEN(10000), а "0" вимикає читання взагалі.<br/> |
Latest revision as of 18:26, 11 May 2025
Функції об'єкту вихідного транспорту (SYS.Transport["Modul"]["out_Transp"]):
- bool isNetwork() — ознака — "Транспорт мережевий", що визначає таймаути у секундах.
- ElTp cfg(string nm) — отримує значення конфігураційного поля nm об'єкту.
- bool cfgSet(string nm, ElTp val) [доступ до відповідної підсистеми] — встановлює конфігураційне поле nm об'єкту у значення val.
- string status() — рядок статусу транспорту.
- bool start( bool vl = EVAL, int tm = 0 ) — повертає статус "Виконання", запускає/зупиняє за vl (якщо не EVAL). Для запуску можна вказувати особливий таймаут tm.
- string addr( string vl = "" ) — адреса транспорту, встановлює у непорожнє значення vl.
- string timings( string vl = "", isDef = true ) — таймінги транспорту, встановлює у непорожнє значення vl та по замовченню для isDef.
- int attempts( int vl = EVAL ) — спроб підключень транспорту, встановлює у не-EVAL значення vl.
- ElTp conPrm( string id, ElTp val = EVAL, string cfg = "" ) — загальне поводження із параметром часу підключення id з встановленням у значення val за наявності; запит конфігураційного параметру часу підключення із реєстрацією конфігурації cfg у форматі "{SRC}\n{NAME}\n{HELP}" вперше.
- bool setConPrm( string id, ElTp val ) — встановлення параметру часу підключення id у значення val, лише для сумісності.
- string messIO( string mess, real timeOut = 0, int inBufLen = -1 ); — відправляє повідомлення mess через транспорт з таймаутом очікування відповіді timeOut (у секундах) та читає відповідь (буфер) розміром inBufLen байт. У випадку нульового таймауту цей час береться з налаштувань вихідного транспорту. Негативний час timeOut (< -1e-3) вимикає роботу транспорту у режимі запит/відповідь та дозволяє незалежно читати/писати у буфер ВВ, з таймаутом читання timeOut у абсолютному значенні. Для негативного inBufLen розмір буферу встановлюється у STR_BUF_LEN(10000), а "0" вимикає читання взагалі.
Якщо Ваш транспорт у відповідь на запит передбачає отримання даних частинами тоді використовуйте цю функцію у одному потоці для декількох пристроїв на одній шині-транспорті оскільки тут не існує способу блокування транспорту з користувацького API. Один потік це об'єкт контролеру підсистеми "Збір даних", а модуль "Протокол користувача" блокує транспорт всередині, перед виконанням своїх користувацьких процедур.
rez = SYS.Transport.Serial.out_ttyUSB0.messIO(SYS.strFromCharCode(0x4B,0x00,0x37,0x40),0.2); //Wait for all the message tail by timeout and empty result while(rez.length && (trez=SYS.Transport.Serial.out_ttyUSB0.messIO("")).length) rez += trez;
- string messIO( XMLNodeObj req, string prt ); — відправляє запити req до протоколу prt для здійснення сеансу зв'язку через транспорт за посередництвом протоколу. Повертає рядок із помилкою у форматі "{errCod}:{errText}", який порожній для успішного запиту.
req = SYS.XMLNode("TCP"); req.setAttr("id","test").setAttr("reqTm",500).setAttr("node",1).setAttr("reqTry",2).setText(SYS.strFromCharCode(0x03,0x00,0x00,0x00,0x05)); SYS.Transport.Sockets.out_testModBus.messIO(req,"ModBus"); test = Special.FLibSYS.strDec4Bin(req.text());