[{"data":1,"prerenderedAt":1300},["ShallowReactive",2],{"docs-nav-docs_en":3,"docs-page-\u002Fen\u002Freference\u002Fdrivers":367,"docs-surround-\u002Fen\u002Freference\u002Fdrivers":1297},[4],{"title":5,"path":6,"stem":7,"children":8},"En","\u002Fen","en",[9,13,41,58,76,103,157,171,190,211,238,283,303],{"title":10,"path":6,"stem":11,"navTitle":12},"QInsight Documentation","en\u002Findex","Overview",{"title":14,"navTitle":15,"path":16,"stem":17,"children":18,"page":40},"Getting Started",null,"\u002Fen\u002Fgetting-started","en\u002F01.getting-started",[19,23,27,31,36],{"title":20,"path":21,"stem":22,"navTitle":20},"What is QENEX Suite","\u002Fen\u002Fgetting-started\u002Fwhat-is-qenex-suite","en\u002F01.getting-started\u002F1.what-is-qenex-suite",{"title":24,"path":25,"stem":26,"navTitle":24},"What is QInsight","\u002Fen\u002Fgetting-started\u002Fwhat-is-qinsight","en\u002F01.getting-started\u002F2.what-is-qinsight",{"title":28,"path":29,"stem":30,"navTitle":28},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F01.getting-started\u002F3.installation",{"title":32,"path":33,"stem":34,"navTitle":35},"The QInsight user interface","\u002Fen\u002Fgetting-started\u002Fthe-qinsight-interface","en\u002F01.getting-started\u002F4.the-qinsight-interface","User interface",{"title":37,"path":38,"stem":39,"navTitle":37},"Licensing","\u002Fen\u002Fgetting-started\u002Flicensing","en\u002F01.getting-started\u002F5.licensing",false,{"title":42,"navTitle":15,"path":43,"stem":44,"children":45,"page":40},"First Project","\u002Fen\u002Ffirst-project","en\u002F02.first-project",[46,50,54],{"title":47,"path":48,"stem":49,"navTitle":47},"Create a project","\u002Fen\u002Ffirst-project\u002Fcreate-a-project","en\u002F02.first-project\u002F1.create-a-project",{"title":51,"path":52,"stem":53,"navTitle":51},"Project structure","\u002Fen\u002Ffirst-project\u002Fproject-structure","en\u002F02.first-project\u002F2.project-structure",{"title":55,"path":56,"stem":57,"navTitle":55},"Project password","\u002Fen\u002Ffirst-project\u002Fproject-password","en\u002F02.first-project\u002F3.project-password",{"title":59,"navTitle":15,"path":60,"stem":61,"children":62,"page":40},"Connecting a Device","\u002Fen\u002Fconnecting-a-device","en\u002F03.connecting-a-device",[63,67,71],{"title":64,"path":65,"stem":66,"navTitle":64},"Add a driver","\u002Fen\u002Fconnecting-a-device\u002Fadd-a-driver","en\u002F03.connecting-a-device\u002F1.add-a-driver",{"title":68,"path":69,"stem":70,"navTitle":68},"Add a protocol","\u002Fen\u002Fconnecting-a-device\u002Fadd-a-protocol","en\u002F03.connecting-a-device\u002F2.add-a-protocol",{"title":72,"path":73,"stem":74,"navTitle":75},"Link a driver and a protocol","\u002Fen\u002Fconnecting-a-device\u002Flink-driver-and-protocol","en\u002F03.connecting-a-device\u002F3.link-driver-and-protocol","Linking",{"title":77,"navTitle":15,"path":78,"stem":79,"children":80,"page":40},"Variables","\u002Fen\u002Fvariables","en\u002F04.variables",[81,85,90,94,99],{"title":82,"path":83,"stem":84,"navTitle":82},"What is a variable","\u002Fen\u002Fvariables\u002Fwhat-is-a-variable","en\u002F04.variables\u002F1.what-is-a-variable",{"title":86,"path":87,"stem":88,"navTitle":89},"Conversion and presentation","\u002Fen\u002Fvariables\u002Fconversion-and-presentation","en\u002F04.variables\u002F2.conversion-and-presentation","Conversion & presentation",{"title":91,"path":92,"stem":93,"navTitle":91},"Add a variable","\u002Fen\u002Fvariables\u002Fadd-a-variable","en\u002F04.variables\u002F3.add-a-variable",{"title":95,"path":96,"stem":97,"navTitle":98},"Matrix variable (array, curve, map)","\u002Fen\u002Fvariables\u002Fmatrix-variable","en\u002F04.variables\u002F4.matrix-variable","Matrix variable",{"title":100,"path":101,"stem":102,"navTitle":100},"Events","\u002Fen\u002Fvariables\u002Fevents","en\u002F04.variables\u002F5.events",{"title":104,"navTitle":15,"path":105,"stem":106,"children":107,"page":40},"Visualization","\u002Fen\u002Fvisualization","en\u002F05.visualization",[108,113,118,122,127,132,137,142,147,152],{"title":109,"path":110,"stem":111,"navTitle":112},"Create a workspace","\u002Fen\u002Fvisualization\u002Fcreate-a-workspace","en\u002F05.visualization\u002F1.create-a-workspace","Workspace",{"title":114,"path":115,"stem":116,"navTitle":117},"Writing values to the device","\u002Fen\u002Fvisualization\u002Fwrite-to-device","en\u002F05.visualization\u002F10.write-to-device","Writing to the device",{"title":119,"path":120,"stem":121,"navTitle":119},"Add a control","\u002Fen\u002Fvisualization\u002Fadd-a-control","en\u002F05.visualization\u002F2.add-a-control",{"title":123,"path":124,"stem":125,"navTitle":126},"Bind a control to a variable","\u002Fen\u002Fvisualization\u002Fbind-a-control","en\u002F05.visualization\u002F3.bind-a-control","Bind a control",{"title":128,"path":129,"stem":130,"navTitle":131},"Graph — signal time course","\u002Fen\u002Fvisualization\u002Fgraph-control","en\u002F05.visualization\u002F4.graph-control","Graph",{"title":133,"path":134,"stem":135,"navTitle":136},"XY Graph — signal versus signal","\u002Fen\u002Fvisualization\u002Fxy-graph-control","en\u002F05.visualization\u002F5.xy-graph-control","XY Graph",{"title":138,"path":139,"stem":140,"navTitle":141},"Gauge — instantaneous value indicator","\u002Fen\u002Fvisualization\u002Fgauge-control","en\u002F05.visualization\u002F6.gauge-control","Gauge",{"title":143,"path":144,"stem":145,"navTitle":146},"Single-Signal — a value with a caption","\u002Fen\u002Fvisualization\u002Fsignal-control","en\u002F05.visualization\u002F7.signal-control","Single-Signal",{"title":148,"path":149,"stem":150,"navTitle":151},"Watch Table — a table of variables","\u002Fen\u002Fvisualization\u002Fwatch-table-control","en\u002F05.visualization\u002F8.watch-table-control","Watch Table",{"title":153,"path":154,"stem":155,"navTitle":156},"Matrix control — maps and calibration","\u002Fen\u002Fvisualization\u002Fmatrix-control","en\u002F05.visualization\u002F9.matrix-control","Matrix control",{"title":158,"navTitle":15,"path":159,"stem":160,"children":161,"page":40},"Running and Monitoring","\u002Fen\u002Frunning","en\u002F06.running",[162,166],{"title":163,"path":164,"stem":165,"navTitle":163},"Start and stop","\u002Fen\u002Frunning\u002Fstart-and-stop","en\u002F06.running\u002F1.start-and-stop",{"title":167,"path":168,"stem":169,"navTitle":170},"Watching live data","\u002Fen\u002Frunning\u002Fwatching-live-data","en\u002F06.running\u002F2.watching-live-data","Live data",{"title":172,"navTitle":15,"path":173,"stem":174,"children":175,"page":40},"Logging and Replay","\u002Fen\u002Flogging-and-replay","en\u002F07.logging-and-replay",[176,180,185],{"title":177,"path":178,"stem":179,"navTitle":177},"Logging data","\u002Fen\u002Flogging-and-replay\u002Flogging-data","en\u002F07.logging-and-replay\u002F1.logging-data",{"title":181,"path":182,"stem":183,"navTitle":184},"Replaying a log","\u002Fen\u002Flogging-and-replay\u002Freplaying-a-log","en\u002F07.logging-and-replay\u002F2.replaying-a-log","Replay",{"title":186,"path":187,"stem":188,"navTitle":189},"Exporting data","\u002Fen\u002Flogging-and-replay\u002Fexporting-data","en\u002F07.logging-and-replay\u002F3.exporting-data","Export",{"title":191,"navTitle":15,"path":192,"stem":193,"children":194,"page":40},"Python Scripts","\u002Fen\u002Fpython-scripts","en\u002F08.python-scripts",[195,199,203,207],{"title":196,"path":197,"stem":198,"navTitle":12},"Scripts overview","\u002Fen\u002Fpython-scripts\u002Fscripts-overview","en\u002F08.python-scripts\u002F1.scripts-overview",{"title":200,"path":201,"stem":202,"navTitle":200},"Accessing variables","\u002Fen\u002Fpython-scripts\u002Faccessing-variables","en\u002F08.python-scripts\u002F2.accessing-variables",{"title":204,"path":205,"stem":206,"navTitle":204},"Example script","\u002Fen\u002Fpython-scripts\u002Fexample-script","en\u002F08.python-scripts\u002F3.example-script",{"title":208,"path":209,"stem":210,"navTitle":208},"CSV post-processing","\u002Fen\u002Fpython-scripts\u002Fcsv-post-processing","en\u002F08.python-scripts\u002F4.csv-post-processing",{"title":212,"navTitle":15,"path":213,"stem":214,"children":215,"page":40},"Custom extensions","\u002Fen\u002Fcustom-extensions","en\u002F09.custom-extensions",[216,220,224,228,233],{"title":217,"path":218,"stem":219,"navTitle":217},"Custom driver","\u002Fen\u002Fcustom-extensions\u002Fcustom-driver","en\u002F09.custom-extensions\u002F1.custom-driver",{"title":221,"path":222,"stem":223,"navTitle":221},"Custom protocol","\u002Fen\u002Fcustom-extensions\u002Fcustom-protocol","en\u002F09.custom-extensions\u002F2.custom-protocol",{"title":225,"path":226,"stem":227,"navTitle":225},"Custom Control","\u002Fen\u002Fcustom-extensions\u002Fcustom-control","en\u002F09.custom-extensions\u002F3.custom-control",{"title":229,"path":230,"stem":231,"navTitle":232},"Complete example — ISS position","\u002Fen\u002Fcustom-extensions\u002Fiss-example","en\u002F09.custom-extensions\u002F4.iss-example","Example ISS",{"title":234,"path":235,"stem":236,"navTitle":237},"Complete example — temperature sensor","\u002Fen\u002Fcustom-extensions\u002Ftemp-sensor-example","en\u002F09.custom-extensions\u002F5.temp-sensor-example","Example temp sensor",{"title":239,"navTitle":15,"path":240,"stem":241,"children":242,"page":40},"QFW SDK","\u002Fen\u002Fdevice-sdk","en\u002F10.device-sdk",[243,248,253,258,263,268,273,278],{"title":244,"path":245,"stem":246,"navTitle":247},"QFW SDK — introduction","\u002Fen\u002Fdevice-sdk\u002Fintroduction","en\u002F10.device-sdk\u002F1.introduction","Introduction",{"title":249,"path":250,"stem":251,"navTitle":252},"XCP in the QFW SDK","\u002Fen\u002Fdevice-sdk\u002Fxcp","en\u002F10.device-sdk\u002F2.xcp","XCP",{"title":254,"path":255,"stem":256,"navTitle":257},"Integration step by step: XCP on TCP with FreeRTOS + lwIP","\u002Fen\u002Fdevice-sdk\u002Fintegration-tcp","en\u002F10.device-sdk\u002F3.integration-tcp","Integration: XCP on TCP",{"title":259,"path":260,"stem":261,"navTitle":262},"XCP on classic CAN — what changes","\u002Fen\u002Fdevice-sdk\u002Fcan","en\u002F10.device-sdk\u002F4.can","XCP on classic CAN",{"title":264,"path":265,"stem":266,"navTitle":267},"Integration without an RTOS: XCP on TCP from the main loop","\u002Fen\u002Fdevice-sdk\u002Fbaremetal","en\u002F10.device-sdk\u002F5.baremetal","Integration without an RTOS",{"title":269,"path":270,"stem":271,"navTitle":272},"The engine contract","\u002Fen\u002Fdevice-sdk\u002Fengine-contract","en\u002F10.device-sdk\u002F6.engine-contract","Engine contract",{"title":274,"path":275,"stem":276,"navTitle":277},"Variable addresses for QInsight","\u002Fen\u002Fdevice-sdk\u002Fvariable-addresses","en\u002F10.device-sdk\u002F7.variable-addresses","Variable addresses",{"title":279,"path":280,"stem":281,"navTitle":282},"Troubleshooting the SDK integration","\u002Fen\u002Fdevice-sdk\u002Ftroubleshooting","en\u002F10.device-sdk\u002F8.troubleshooting","Troubleshooting",{"title":284,"navTitle":15,"path":285,"stem":286,"children":287,"page":40},"Reference","\u002Fen\u002Freference","en\u002F11.reference",[288,292,296,300],{"title":289,"path":290,"stem":291,"navTitle":289},"Drivers","\u002Fen\u002Freference\u002Fdrivers","en\u002F11.reference\u002F1.drivers",{"title":293,"path":294,"stem":295,"navTitle":293},"Protocols","\u002Fen\u002Freference\u002Fprotocols","en\u002F11.reference\u002F2.protocols",{"title":297,"path":298,"stem":299,"navTitle":297},"Controls","\u002Fen\u002Freference\u002Fcontrols","en\u002F11.reference\u002F3.controls",{"title":282,"path":301,"stem":302,"navTitle":282},"\u002Fen\u002Freference\u002Ftroubleshooting","en\u002F11.reference\u002F4.troubleshooting",{"title":304,"navTitle":15,"path":305,"stem":306,"children":307,"page":40},"Examples","\u002Fen\u002Fexamples","en\u002F12.examples",[308,312,317,322,327,331,335,339,343,347,352,357,362],{"title":309,"path":310,"stem":311,"navTitle":309},"Simulation: all signals","\u002Fen\u002Fexamples\u002Fsimulation-all-signals","en\u002F12.examples\u002F01.simulation-all-signals",{"title":313,"path":314,"stem":315,"navTitle":316},"Modbus RTU master over a serial line","\u002Fen\u002Fexamples\u002Fserial-modbus-master","en\u002F12.examples\u002F02.serial-modbus-master","Modbus RTU master",{"title":318,"path":319,"stem":320,"navTitle":321},"Modbus RTU slave with simulated sensors","\u002Fen\u002Fexamples\u002Fserial-modbus-slave","en\u002F12.examples\u002F03.serial-modbus-slave","Modbus RTU slave",{"title":323,"path":324,"stem":325,"navTitle":326},"Modbus TCP master over a TCP client","\u002Fen\u002Fexamples\u002Ftcp-client-modbus-master","en\u002F12.examples\u002F04.tcp-client-modbus-master","Modbus TCP master",{"title":328,"path":329,"stem":330,"navTitle":328},"Modbus TCP slave on the TCP Server","\u002Fen\u002Fexamples\u002Ftcp-server-modbus-slave","en\u002F12.examples\u002F05.tcp-server-modbus-slave",{"title":332,"path":333,"stem":334,"navTitle":332},"Bit field and a script","\u002Fen\u002Fexamples\u002Fbit-field-script","en\u002F12.examples\u002F08.bit-field-script",{"title":336,"path":337,"stem":338,"navTitle":336},"Two ECUs at once","\u002Fen\u002Fexamples\u002Ftwo-ecus","en\u002F12.examples\u002F09.two-ecus",{"title":340,"path":341,"stem":342,"navTitle":340},"ISS position live","\u002Fen\u002Fexamples\u002Fiss-live-tracking","en\u002F12.examples\u002F10.iss-live-tracking",{"title":344,"path":345,"stem":346,"navTitle":344},"Simulated thermometer","\u002Fen\u002Fexamples\u002Fsimul-temp-measure","en\u002F12.examples\u002F11.simul-temp-measure",{"title":348,"path":349,"stem":350,"navTitle":351},"JSON signals from a Python generator","\u002Fen\u002Fexamples\u002Fjson-signal-python","en\u002F12.examples\u002F12.json-signal-python","JSON signals from Python",{"title":353,"path":354,"stem":355,"navTitle":356},"Raw CAN frames from a Raspberry Pi","\u002Fen\u002Fexamples\u002Fraw-can-python","en\u002F12.examples\u002F13.raw-can-python","Raw CAN from a Raspberry Pi",{"title":358,"path":359,"stem":360,"navTitle":361},"XCP on TCP on a NUCLEO-H723ZG: measurement, stimulation and calibration maps","\u002Fen\u002Fexamples\u002Ftcp-client-xcp-nucleo-maps","en\u002F12.examples\u002F14.tcp-client-xcp-nucleo-maps","XCP on TCP on NUCLEO-H723ZG",{"title":363,"path":364,"stem":365,"navTitle":366},"XCP on CAN on a NUCLEO-H723ZG: measurement, stimulation and calibration maps","\u002Fen\u002Fexamples\u002Fcan-xcp-nucleo-maps","en\u002F12.examples\u002F15.can-xcp-nucleo-maps","XCP on CAN on NUCLEO-H723ZG",{"id":368,"title":289,"body":369,"description":1291,"extension":1292,"meta":1293,"navTitle":289,"navigation":1294,"path":290,"seo":1295,"stem":291,"__hash__":1296},"docs_en\u002Fen\u002F11.reference\u002F1.drivers.md",{"type":370,"value":371,"toc":1277},"minimark",[372,376,396,426,437,442,445,504,551,561,565,573,576,585,678,693,697,704,711,718,796,818,824,828,835,842,849,1002,1025,1029,1036,1043,1050,1152,1155,1159,1166,1169,1176,1180,1187,1202,1205,1209,1216,1234,1238,1245,1271],[373,374,289],"h1",{"id":375},"drivers",[377,378,379,380,384,385,389,390,395],"p",{},"An overview of the drivers shipped with QInsight. Configuration parameters\nare entered in the ",[381,382,383],"strong",{},"Settings"," field in the ",[386,387,388],"code",{},"key=value;key=value"," form\n(keys are case-insensitive). A driver handles the physical data transport —\ninterpreting the data is the job of a ",[391,392,394],"a",{"href":393},"\u002Freference\u002Fprotocols","protocol",".",[377,397,398,399,401,402,406,407,410,411,414,415,418,419,418,422,425],{},"When you add a driver, the ",[381,400,383],{}," field is automatically pre-filled\nwith a template of all parameters (the ",[403,404,405],"em",{},"Pre-filled"," line under each driver\nbelow). ",[381,408,409],{},"These are only defaults — always overwrite them to match your real\nsetup."," The ",[403,412,413],{},"Default"," column in the tables applies when you omit the\nparameter entirely. Device-specific parameters (",[386,416,417],{},"port",", ",[386,420,421],{},"deviceId",[386,423,424],{},"ip",")\nmust always be set by hand.",[377,427,428,429,432,433,436],{},"About settings parsing in general: keys are case-insensitive and values\nmay be quoted (",[386,430,431],{},"port=\"COM3\"","). ",[381,434,435],{},"An unknown key (a typo or a name from an\nearlier version) is ignored and the driver reports it with a warning in\nthe log",", listing every key it does know; an invalid value falls back to\nthe default with a warning. Check the log after every settings change.",[438,439,441],"h2",{"id":440},"reconnection","Reconnection",[377,443,444],{},"Every driver that talks to a device (Serial Port, TCP Client, TCP Server,\nPEAK CAN) behaves the same way after losing its connection and is\nconfigured with the same pair of parameters:",[446,447,448,463],"table",{},[449,450,451],"thead",{},[452,453,454,458,460],"tr",{},[455,456,457],"th",{},"Parameter",[455,459,413],{},[455,461,462],{},"Meaning",[464,465,466,480],"tbody",{},[452,467,468,474,477],{},[469,470,471],"td",{},[386,472,473],{},"reconnectDelayMs",[469,475,476],{},"1000 (Serial Port 2000)",[469,478,479],{},"pause between two reconnect attempts in ms",[452,481,482,487,490],{},[469,483,484],{},[386,485,486],{},"reconnectAttempts",[469,488,489],{},"-1",[469,491,492,493,495,496,499,500,503],{},"how many times to retry after a failed attempt: ",[386,494,489],{}," = forever, ",[386,497,498],{},"0"," = never (the driver stops at the first failure), ",[386,501,502],{},"N"," = give up after N consecutive failed attempts",[505,506,507,515,525,532],"ul",{},[508,509,510,511,514],"li",{},"The failure counter ",[381,512,513],{},"restarts after every successful connection"," — a\nlong measurement survives scattered outages; only an unbroken run of\nfailures exhausts the limit.",[508,516,517,518,521,522,395],{},"During an outage the driver is ",[381,519,520],{},"Faulted",", its protocols stay running\nand wait (XCP drops its session and re-establishes it when the transport\nis back, the Modbus master pauses polling). Once the connection is back\nthe communication continues ",[381,523,524],{},"without any operator action",[508,526,527,528,531],{},"Every attempt is a warning in the log: ",[386,529,530],{},"… failed (attempt 3\u002F4): … Reconnecting in 1000 ms."," With endless retries only the first three\nattempts are logged, then one line per minute with the current attempt\nnumber, so the log is not flooded.",[508,533,534,535,538,539,542,543,546,547,395],{},"When the limit is exhausted the driver logs an error ",[386,536,537],{},"gave up after N reconnect attempt(s): …",", stops its protocols and ends ",[381,540,541],{},"Stopped"," with\nthat message. The other drivers and the runtime keep running; the\nstopped driver can be started again with the ",[381,544,545],{},"Start"," button in its\nproperties — see\n",[391,548,550],{"href":549},"\u002Frunning\u002Fstart-and-stop#driver-states-and-the-start-button","Driver states and the Start button",[377,552,553,554,557,558,560],{},"The TCP drivers have one more parameter, ",[386,555,556],{},"keepAliveMs"," (default 5000,\n",[386,559,498],{}," = off): after that much silence on the connection the operating\nsystem sends keepalive probes (every second, the connection is closed\nafter three unanswered probes). A pulled cable or a vanished peer is thus\ndetected within seconds instead of the tens of seconds of the plain TCP\ntimeout. Switch it off only on networks where keepalive probes are\nunwanted.",[438,562,564],{"id":563},"tcp-client","TCP Client",[377,566,567],{},[403,568,569,570],{},"Technical name (stored in the project): ",[386,571,572],{},"TcpClientDriver",[377,574,575],{},"A bidirectional TCP client: connects to a server (device) and transports\nraw bytes. Framing and encoding are the protocol's job — typically\nJSON Signal Stream, Modbus Master (TCP), or XCP on TCP.",[377,577,578,581,582],{},[381,579,580],{},"Pre-filled:"," ",[386,583,584],{},"ip=127.0.0.1;port=5000;connectionTimeoutMs=5000;reconnectDelayMs=1000;reconnectAttempts=-1;keepAliveMs=5000",[446,586,587,597],{},[449,588,589],{},[452,590,591,593,595],{},[455,592,457],{},[455,594,413],{},[455,596,462],{},[464,598,599,611,623,635,650,664],{},[452,600,601,605,608],{},[469,602,603],{},[386,604,424],{},[469,606,607],{},"127.0.0.1",[469,609,610],{},"server address",[452,612,613,617,620],{},[469,614,615],{},[386,616,417],{},[469,618,619],{},"5000",[469,621,622],{},"TCP port",[452,624,625,630,632],{},[469,626,627],{},[386,628,629],{},"connectionTimeoutMs",[469,631,619],{},[469,633,634],{},"how long to wait for the connection to be established, in ms",[452,636,637,641,644],{},[469,638,639],{},[386,640,473],{},[469,642,643],{},"1000",[469,645,646,647],{},"pause between reconnect attempts, see ",[391,648,441],{"href":649},"#reconnection",[452,651,652,656,658],{},[469,653,654],{},[386,655,486],{},[469,657,489],{},[469,659,660,661,663],{},"number of reconnect attempts, ",[386,662,489],{}," = forever",[452,665,666,670,672],{},[469,667,668],{},[386,669,556],{},[469,671,619],{},[469,673,674,675,677],{},"TCP keepalive: probes the connection after that much silence, ",[386,676,498],{}," = off",[377,679,680,681,684,685,688,689,692],{},"A quiet line is never treated as a fault (Modbus TCP sends nothing between\npolls); a dead connection is detected by the keepalive. Timeouts below\n1 ms are raised to 1. The former names ",[386,682,683],{},"reconnectTimeMs",",\n",[386,686,687],{},"numberOfReconnections"," and ",[386,690,691],{},"idleTimeoutMs"," are no longer read — the log\nshows an unknown-key warning and the settings have to be rewritten.",[438,694,696],{"id":695},"tcp-server","TCP Server",[377,698,699],{},[403,700,569,701],{},[386,702,703],{},"TcpServerDriver",[377,705,706,707,710],{},"A binary TCP server (listener) transporting raw bytes — typically for\n",[381,708,709],{},"Modbus Slave (TCP)",". Accepts one client; a new incoming connection\nreplaces the current one.",[377,712,713,581,715],{},[381,714,580],{},[386,716,717],{},"bindAddress=0.0.0.0;port=502;reconnectDelayMs=1000;reconnectAttempts=-1;keepAliveMs=5000",[446,719,720,730],{},[449,721,722],{},[452,723,724,726,728],{},[455,725,457],{},[455,727,413],{},[455,729,462],{},[464,731,732,745,757,770,783],{},[452,733,734,739,742],{},[469,735,736],{},[386,737,738],{},"bindAddress",[469,740,741],{},"0.0.0.0",[469,743,744],{},"local address the server listens on",[452,746,747,751,754],{},[469,748,749],{},[386,750,417],{},[469,752,753],{},"502",[469,755,756],{},"TCP port (the default matches Modbus TCP)",[452,758,759,763,765],{},[469,760,761],{},[386,762,473],{},[469,764,643],{},[469,766,767,768],{},"pause between attempts to open the port, see ",[391,769,441],{"href":649},[452,771,772,776,778],{},[469,773,774],{},[386,775,486],{},[469,777,489],{},[469,779,780,781,663],{},"number of attempts to open the port, ",[386,782,489],{},[452,784,785,789,791],{},[469,786,787],{},[386,788,556],{},[469,790,619],{},[469,792,793,794,677],{},"TCP keepalive on the accepted connection, ",[386,795,498],{},[377,797,798,800,801,803,804,806,807,810,811,814,815,395],{},[386,799,738],{}," must be an IP address (",[386,802,741],{}," = all interfaces,\n",[386,805,607],{}," = local machine only) — a host name is not accepted. For the\nserver the reconnection parameters apply to ",[381,808,809],{},"opening the listening\nport",": when the port is in use (another program already listens on 502)\nor the given address does not exist in the system yet, the driver keeps\ntrying and comes up as soon as the port is free. A client going away is\nnot a fault — the server keeps listening and the next client takes over;\na clean disconnect is logged as ",[386,812,813],{},"client … disconnected",", a connection\nended by the keepalive (cable pulled at the client) as the warning\n",[386,816,817],{},"client … lost",[377,819,820,823],{},[381,821,822],{},"Firewall:"," incoming connections to the server port must be allowed by\nthe firewall on the PC running QInsight (Windows Defender Firewall or the\nfirewall of an antivirus suite). In the rule the local side is the QInsight\nPC and the remote side is the master; after an outage the connection is\nalways re-established by the master (the client).",[438,825,827],{"id":826},"serial-port-com","Serial Port (COM)",[377,829,830],{},[403,831,569,832],{},[386,833,834],{},"SerialPortDriver",[377,836,837,838,841],{},"A serial COM port transporting raw bytes — typically for ",[381,839,840],{},"Modbus RTU",".\nOne instance = one COM port; after a failure (e.g. a USB converter unplug)\nthe port is reopened automatically.",[377,843,844,581,846],{},[381,845,580],{},[386,847,848],{},"port=COM1;baudRate=9600;dataBits=8;parity=none;stopBits=1;handshake=none;reconnectDelayMs=2000;reconnectAttempts=-1",[446,850,851,861],{},[449,852,853],{},[452,854,855,857,859],{},[455,856,457],{},[455,858,413],{},[455,860,462],{},[464,862,863,878,891,904,931,952,975,989],{},[452,864,865,869,872],{},[469,866,867],{},[386,868,417],{},[469,870,871],{},"— (mandatory)",[469,873,874,875],{},"COM port name, e.g. ",[386,876,877],{},"COM3",[452,879,880,885,888],{},[469,881,882],{},[386,883,884],{},"baudRate",[469,886,887],{},"9600",[469,889,890],{},"communication speed",[452,892,893,898,901],{},[469,894,895],{},[386,896,897],{},"dataBits",[469,899,900],{},"8",[469,902,903],{},"number of data bits",[452,905,906,911,914],{},[469,907,908],{},[386,909,910],{},"parity",[469,912,913],{},"none",[469,915,916,917,418,919,418,922,418,925,418,928],{},"parity: ",[386,918,913],{},[386,920,921],{},"even",[386,923,924],{},"odd",[386,926,927],{},"mark",[386,929,930],{},"space",[452,932,933,938,941],{},[469,934,935],{},[386,936,937],{},"stopBits",[469,939,940],{},"1",[469,942,943,944,418,946,418,949],{},"stop bits: ",[386,945,940],{},[386,947,948],{},"1.5",[386,950,951],{},"2",[452,953,954,959,961],{},[469,955,956],{},[386,957,958],{},"handshake",[469,960,913],{},[469,962,963,964,418,966,418,969,418,972],{},"flow control: ",[386,965,913],{},[386,967,968],{},"rts",[386,970,971],{},"xonxoff",[386,973,974],{},"rtsxonxoff",[452,976,977,981,984],{},[469,978,979],{},[386,980,473],{},[469,982,983],{},"2000",[469,985,986,987],{},"delay before reopening the port after a failure, see ",[391,988,441],{"href":649},[452,990,991,995,997],{},[469,992,993],{},[386,994,486],{},[469,996,489],{},[469,998,999,1000,663],{},"number of attempts to reopen the port, ",[386,1001,489],{},[377,1003,1004,1005,1007,1008,1007,1010,1012,1013,688,1015,1017,1018,1021,1022,1024],{},"Type the ",[386,1006,910],{},"\u002F",[386,1009,937],{},[386,1011,958],{}," values exactly as listed — an\ninvalid value is replaced by the default with a warning in the log, and\nthe communication then runs with the wrong framing (typically 8N1 instead\nof 8E1). ",[386,1014,884],{},[386,1016,897],{}," are passed to the port unchecked:\na nonsensical value (e.g. ",[386,1019,1020],{},"dataBits=9","; the usual range is 5–8) fails when\nthe port opens and the driver retries every ",[386,1023,473],{}," — the cause\nis in the log. Unplugging the USB converter is noticed by Windows at once;\na broken wire between two converters is not seen by the driver, only the\nprotocol reports it through its response timeout.",[438,1026,1028],{"id":1027},"peak-can-adapter","PEAK CAN Adapter",[377,1030,1031],{},[403,1032,569,1033],{},[386,1034,1035],{},"PeakCANDriver",[377,1037,1038,1039,1042],{},"CAN bus access through a PEAK PCAN USB adapter; hands CAN frames to the\nprotocols (Raw CAN Frames, XCP on CAN). One driver instance corresponds to one physical\nadapter — it is selected by the ",[381,1040,1041],{},"Device ID"," stored in the adapter, so the\nconfiguration survives plugging the adapter into a different USB port.",[377,1044,1045,581,1047],{},[381,1046,580],{},[386,1048,1049],{},"deviceId=0x51;bitrate=250000;reconnectDelayMs=1000;reconnectAttempts=-1",[446,1051,1052,1062],{},[449,1053,1054],{},[452,1055,1056,1058,1060],{},[455,1057,457],{},[455,1059,413],{},[455,1061,462],{},[464,1063,1064,1088,1126,1139],{},[452,1065,1066,1070,1072],{},[469,1067,1068],{},[386,1069,421],{},[469,1071,498],{},[469,1073,1074,1075,1078,1079,418,1082,418,1085],{},"adapter ID, ",[381,1076,1077],{},"always hexadecimal"," (range 0–FF per PEAK Settings); accepted forms ",[386,1080,1081],{},"1A",[386,1083,1084],{},"0x1A",[386,1086,1087],{},"1Ah",[452,1089,1090,1095,1098],{},[469,1091,1092],{},[386,1093,1094],{},"bitrate",[469,1096,1097],{},"250000",[469,1099,1100,1101,1104,1105,418,1108,418,1111,418,1114,418,1116,418,1119,418,1122,1125],{},"bus speed in bit\u002Fs, ",[381,1102,1103],{},"decimal",": ",[386,1106,1107],{},"50000",[386,1109,1110],{},"100000",[386,1112,1113],{},"125000",[386,1115,1097],{},[386,1117,1118],{},"500000",[386,1120,1121],{},"800000",[386,1123,1124],{},"1000000","; any other value falls back to 250000 with a warning",[452,1127,1128,1132,1134],{},[469,1129,1130],{},[386,1131,473],{},[469,1133,643],{},[469,1135,1136,1137],{},"pause between attempts to initialize the adapter, see ",[391,1138,441],{"href":649},[452,1140,1141,1145,1147],{},[469,1142,1143],{},[386,1144,486],{},[469,1146,489],{},[469,1148,1149,1150,663],{},"number of attempts, ",[386,1151,489],{},[377,1153,1154],{},"The driver scans USB adapters (PCAN-USB 1–16). When no adapter with the\ngiven Device ID is found, or when two adapters share the same ID, the\nconnection attempt fails with the cause in the log and the driver repeats\nit according to the reconnection parameters. An adapter unplugged while\nrunning (or a bus-off) is detected within a second: the driver releases\nthe channel, tells the protocols the transport is gone and looks for the\nadapter again; after it is plugged back in, XCP re-establishes its session\non its own.",[438,1156,1158],{"id":1157},"simulation","Simulation",[377,1160,1161],{},[403,1162,569,1163],{},[386,1164,1165],{},"SimulDataDriver",[377,1167,1168],{},"A testing driver — it only starts and stops the Simulation Signals\nprotocol, which generates the simulated values itself in the periods of\nthe events assigned to the variables. Lets you try out a project without\nhardware.",[377,1170,1171,1172,1175],{},"The driver has no settings. Older projects may still carry ",[386,1173,1174],{},"periodes=…","\nin the settings — the value is ignored; the simulation rate is driven\nsolely by the variables' events.",[438,1177,1179],{"id":1178},"virtual-variables-host","Virtual Variables Host",[377,1181,1182],{},[403,1183,569,1184],{},[386,1185,1186],{},"VirtualDataDriver",[377,1188,1189,1190,1193,1194,1198,1199,395],{},"Host of ",[381,1191,1192],{},"virtual variables"," — variables whose values are computed by\nPython scripts. The driver communicates with nothing: it only starts and\nstops the Virtual Variables protocol, which publishes the script writes as\nsignal samples. What virtual variables are for and how they are\nconfigured is described under\n",[391,1195,1197],{"href":1196},"\u002Freference\u002Fprotocols#virtual-variables","Virtual Variables",";\na complete walk-through is the example\n",[391,1200,309],{"href":1201},"\u002Fexamples\u002Fsimulation-all-signals",[377,1203,1204],{},"The driver has no settings.",[438,1206,1208],{"id":1207},"data-log-recorder","Data Log Recorder",[377,1210,1211],{},[403,1212,569,1213],{},[386,1214,1215],{},"FileDataLoggerDriver",[377,1217,1218,1219,1222,1223,1226,1227,1230,1231,395],{},"Writes the values of selected variables into a binary ",[386,1220,1221],{},".qilog"," file;\nthe logged variables are handed to it by the ",[381,1224,1225],{},"Data Log Pass-Through","\nprotocol (",[386,1228,1229],{},"PassThroughProtocol","), which is added to the driver\nautomatically. Complete description including all parameters:\n",[391,1232,177],{"href":1233},"\u002Flogging-and-replay\u002Flogging-data",[438,1235,1237],{"id":1236},"data-log-replay","Data Log Replay",[377,1239,1240],{},[403,1241,569,1242],{},[386,1243,1244],{},"FileDataReplayDriver",[377,1246,1247,1248,1250,1251,1254,1255,418,1258,418,1261,418,1264,1267,1268,395],{},"Replays a recorded ",[386,1249,1221],{}," file back into the variables. It is added to\nthe project by the ",[381,1252,1253],{},"Import"," button in the Runtime ribbon; its parameters\n(",[386,1256,1257],{},"file",[386,1259,1260],{},"mode",[386,1262,1263],{},"speed",[386,1265,1266],{},"loop",") are described in\n",[391,1269,181],{"href":1270},"\u002Flogging-and-replay\u002Freplaying-a-log",[377,1272,1273,1274,395],{},"Drivers are plugins — for a custom driver see\n",[391,1275,212],{"href":1276},"\u002Fcustom-extensions\u002Fcustom-driver",{"title":1278,"searchDepth":1279,"depth":1279,"links":1280},"",3,[1281,1283,1284,1285,1286,1287,1288,1289,1290],{"id":440,"depth":1282,"text":441},2,{"id":563,"depth":1282,"text":564},{"id":695,"depth":1282,"text":696},{"id":826,"depth":1282,"text":827},{"id":1027,"depth":1282,"text":1028},{"id":1157,"depth":1282,"text":1158},{"id":1178,"depth":1282,"text":1179},{"id":1207,"depth":1282,"text":1208},{"id":1236,"depth":1282,"text":1237},"A catalog of the shipped drivers and their configuration parameters.","md",{},true,{"title":289,"description":1291},"nI0QfxP6j65RYZy_UhcUq9iGQNUVhwaIYywbv1Iesuk",[1298,1299],{"title":279,"path":280,"stem":281,"navTitle":282,"children":-1},{"title":293,"path":294,"stem":295,"navTitle":293,"children":-1},1791554568268]