SetDataEX и GetDataEx отличаются от SetData/GetData только поведением после выполнения запроса.
SetData/GetData прекращают текущий вызов макроса при возникновении ошибки, а SetDataEx/GetDataEx продолжают выполнение. Ничего общего с асинхронным вызовом.
Любая из этих команд завершается только после выполнения ее запроса. То есть, запрос конечно ставится в общую очередь, но функция вернет управление только после выполнения запроса.
Так что, это неверно:
dimensy писал(а):Макрос отправит запрос и не дожидаясь ответа сразу пойдет на следующую команду. Поэтому us0 у вас всегда будет равна нулю
Если запрос прошел успешно, GetData(Ex) запишет результат в переменную, иначе в переменной останется предыдущее значение.