Отображение/форматирование вывода в экспоненциальной форме в VBScript

Я работаю над проектом автоматизации.

Данные передаются в LabVIEW с аппаратного обеспечения сторонних производителей, а затем передаются в WinCC Flexible через сервер OPC в типе данных float.

Поле отображения вывода поддерживает строковый вывод. Данные, отображаемые на поле дисплея, обрабатываются в VBScript.

Проблема, с которой столкнулись:

WinCC поддерживает теги float и имеет максимальную длину 4.

Вывод, который будет отображаться в поле отображения, имеет строковый тип. При передаче данных через LabVIEW происходит следующее:

Пример 1: Данные LabVIEW: 1.27e-4 | Вывод на WinCC Flex: 0,000127 [Неправильное представление] Все данные ниже e-5 представлены так же, как и выше.

Пример 2:
Данные LabVIEW: 1.27e-10 | Вывод на WinCC Flex: 1.27E-10 [Правильная версия]

Есть ли способ в VBScript отформатировать выходные данные в экспоненциальной записи?

В настоящее время я использую этот VBS для представления...

 If SmartTags("tag_06_1") = 0 Then SmartTags("output_1") = CStr (SmartTags("presseure_test"))

person Nitish Katal    schedule 07.05.2013    source источник


Ответы (1)


Лучшее (наиболее выгодное (ошибка?)) решение всех проблем с форматированием в VBScript — использовать форматирование .NET. Простой POC-скрипт:

  Dim aNums : aNums = Split("0.123 1.27e-4 1.27e-10")
  Dim sNum
  For Each sNum in aNums
      WScript.Echo sNum, CDbl(sNum), fmtExpNum(CDbl(sNum))
  Next

Function fmtExpNum(dblX)
  Dim oSB : Set oSB = CreateObject("System.Text.StringBuilder")
  oSB.AppendFormat "{0:E2}", dblX
  fmtExpNum = oSB.ToString()
End Function

вывод (немецкий язык):

0.123 0,123 1,23E-001
1.27e-4 0,000127 1,27E-004
1.27e-10 0,000000000127 1,27E-010
person Ekkehard.Horner    schedule 07.05.2013