C# ivi Visa (например,: ni visa) TCP сохраняется в живыхC#

Место общения программистов C#
Ответить
Anonymous
 C# ivi Visa (например,: ni visa) TCP сохраняется в живых

Сообщение Anonymous »

Следующий код C# открывает сеанс визы для измерительного прибора: < /p>

Код: Выделить всё

// Connect
var vi = GlobalResourceManager.Open("TCPIP::10.0.0.2::hislip0::INSTR") as IMessageBasedSession;
// Set TCP Keep Alive
if (vi.ResourceName.StartsWith("TCPIP"))
{
((INativeVisaSession)vi).SetAttributeBoolean(NativeVisaAttribute.TcpKeepAlive, true);
}
// IDN query
vi.RawIO.Write("*IDN?");
Console.WriteLine(vi.RawIO.ReadString());
// IDN query using SRQ
vi.EnableEvent(EventType.ServiceRequest);
vi.DiscardEvents(EventType.ServiceRequest);
vi.RawIO.Write("*CLS;*ESE 1;*SRE 32");
vi.RawIO.Write("*IDN?;*OPC");
vi.WaitOnEvent(EventType.ServiceRequest, 1000);
vi.ReadStatusByte();
vi.DisableEvent(EventType.ServiceRequest);
Console.WriteLine(vi.RawIO.ReadString());
// Sleep to monitor keep alive traffic using Wireshark
Thread.Sleep(5 * 60 * 60 * 1000);
// IDN query
vi.RawIO.Write("*IDN?");
Console.WriteLine(vi.RawIO.ReadString());
// IDN query using SRQ
vi.EnableEvent(EventType.ServiceRequest);
vi.DiscardEvents(EventType.ServiceRequest);
vi.RawIO.Write("*CLS;*ESE 1;*SRE 32");
vi.RawIO.Write("*IDN?;*OPC");
vi.WaitOnEvent(EventType.ServiceRequest, 1000);
vi.ReadStatusByte();
vi.DisableEvent(EventType.ServiceRequest);
Console.WriteLine(vi.RawIO.ReadString());
// Disconnect
vi.Dispose();
< /code>
Использование Wireshark Я вижу, что: < /p>

[*]GlobalResourceManager.Open
открывает два соединения TCP (1: порт 61741 до порта 4880, 2: порт 61742 до 4880)

Код: Выделить всё

((INativeVisaSession)vi).SetAttributeBoolean(NativeVisaAttribute.TcpKeepAlive, true)
устанавливает трафик Keep Alive только для первого соединения TCP, а не для второго. Второй, по -видимому, используется для обработки событий. IDN Query все еще работает.
У меня есть следующие вопросы:

Есть ли способ установить жизнь для обоих сеансов TCP? 2 часа. Можно ли это изменить? Это было бы возможно, если бы я мог получить доступ к соединению сокета , см. Непоследовательную частоту TCP-alive.>

Подробнее здесь: https://stackoverflow.com/questions/797 ... keep-alive
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»