Jump to content

Black Shark Virtual Panel v.1.1


Recommended Posts

ЙЕС. Заработало. Не сразу, с подвисанием, но заработало. Спасибо за помощь!

Chopper pilots make History, man. Jetfighters - make movies... ©

Link to comment
Share on other sites

  • 6 months later...

Ещё вопрос. Вообще-то к Создателю, но может быть кто и так подскажет. Возможно ли воткнуть экран шквала в BSVP? и если да, то каким образом? Или, допустим, "своровать" скины приборов и воткнуть их в Гадрок Хелиос?

 

Подчёркиваю - я ни разу не программер, посему разговаривайте как с очень тупым.

Chopper pilots make History, man. Jetfighters - make movies... ©

Link to comment
Share on other sites

Кто то разбирался с принимающим сокетом ? А то во всех примерах только передающий. Ну то есть чтоб передать данные в локон через сокет ?

пишу

host = host or "localhost"

port = port or 10604

socket = require("socket")

local sck = socket.try(socket.bind(host, port))

 

и молчёк локон всё отработал но при попытке подкючиться по порту на это адрес соообщение 10061 сокет не существует


Edited by jazzymanserg
Link to comment
Share on other sites

Настройки на приём и на передачу одинаковы.

 

Настройка

function LuaExportStart()
package.path  = package.path..";.\\LuaSocket\\?.lua"
package.cpath = package.cpath..";.\\LuaSocket\\?.dll"
socket = require("socket")
host = host or "localhost"
port = port or 8080
Buran = socket.try(socket.connect(host,port))
Buran:setoption("tcp-nodelay",true)
end

прием DCSом комманд

function LuaExportBeforeNextFrame()
--получении управляющих комманд
rs, err = Buran:receive('*l')
if (rs ~= nil) then
	_, _, pitch, bank = string.find(rs, "(.+) (.+)")
	LoSetCommand(2001, pitch)
       	LoSetCommand(2002, bank)
       end

end

Link to comment
Share on other sites

Дружище - лажу по всем тема - пока результата 0

 

 

function LuaExportStart()

package.path = package.path..";.\\LuaSocket\\?.lua"

package.cpath = package.cpath..";.\\LuaSocket\\?.dll"

socket = require("socket")

host = host or "localhost"

port = port or 8080

c = socket.try(socket.connect(host, port))

c:setoption("tcp-nodelay",true)

end

 

 

function LuaExportBeforeNextFrame()

rs, err = с:receive('*l')

if (rs ~= nil) then

_, _, pitch, bank = string.find(rs, "(.+) (.+)")

LoSetCommand(2001, pitch)

LoSetCommand(2002, bank)

end

 

end

 

У меня крафт Су-25А.

 

при попытке соединения со скриптом в питоне

 

import socket,select

host = "localhost"

port = 8080

ne = socket.socket()

ne.connect((host, port))

ne.send(<комманда>)

ne.close()

 

получаю ответ что сокета не существует

 

При этом когда запускаю сиок, то коннект с сиок проходит нормально. соеднение проходит

 

Мне кажется что причина банальная

 

Да , кстати, фаервол отключил


Edited by jazzymanserg
Link to comment
Share on other sites

Проверь каким-нибудь tcp терминалом, что связь с дкс точно есть.

Я с питоном не знаком, но судя по всему проблема в нем на твоей стороне, т.к. экспорт этот работает 100%.

Дкс является клиентом, чтобы с ним работать через экспорт твой софт должен быть сервером.

Убедись, что твой питоновский скрипт создает tcp сервер.

 

ps погуглил, судя из твоего кода local sck = socket.try(socket.bind(host, port))

ты как раз таки создаешь клиента, а надо сервер

 

Это если я правильно понял тут

Calling listen() puts the socket into server mode, and accept() waits for an incoming connection.

https://pymotw.com/2/socket/tcp.html


Edited by BR=55=Sevas
Link to comment
Share on other sites

ps погуглил, судя из твоего кода local sck = socket.try(socket.bind(host, port))

ты как раз таки создаешь клиента, а надо сервер

огромное спасибо за направление мысли

 

При оправки питоном строки "431=1", в СИОК переменная 431 выставляется в 1. Это я проверил. А дальше ЛУА должна прочитать данные методом receive(*l). Но ГС должен сначал в сиок послать запрос на нужныіе переменные. а потом обработать методом receive. И зачем тогда нужен СИОК ? если можнонапрямую в ГС

Link to comment
Share on other sites

Не знаю что есть сиок.

Чтобы программно убрать шассии я делаю так

 

function LuaExportBeforeNextFrame()
--получении управл¤ющих комманд
rs, err = Buran:receive('*l')
if (rs ~= nil) then
		_, _, pitch, bank, dCom = string.find(rs, "(.+) (.+) (.+)")
		pitch = tonumber(pitch)
		LoSetCommand(2001, pitch)
       	LoSetCommand(2002, bank)
		dCom = tonumber(dCom)
		if dCom ~= -1		then LoSetCommand(dCom)  end
		
       end

 

Из моего сервера я шлю 3м параметром -1 когда ничего не надо делать, если же надо убрать шасси я однократно отправляю 68.

список других комманд есть в exporte


Edited by BR=55=Sevas
Link to comment
Share on other sites

А что за крафт у тебя ?

И как полностью строк аекспорта выглядит - ну та \n \s \d ?

В су 25 не кликабельнм Losetcommand содержит один параметр LoSetCommand(<command>) убрать шасси 431

 

Блииин - Севас - реальный чувак ! Таки да - дело было в серваке. его надо было поставить сначала на прослушку, а после коннекта слать

И за сайт спасибо !https://pymotw.com


Edited by jazzymanserg
Link to comment
Share on other sites

Крафт - су-27.

Строка обычная, через пробел символы-параметры и конец

типа такого "1 1 1 1\n"

Link to comment
Share on other sites

Новый сюрприз. В чём ошибка ?

В данном варианте работает, но нужно постоянно слать данные,

или -1 или комманду. Если ни чего не слать то на методе

с:receive('*l') ГС зависает. Если разорвать соединение с сокетом

то опять работает

А по идее, если я ни чего не шлю в сокет, то

с:receive('*l') должен вернуть nil, а не ждать данных.

может еще какой то секрет есть ?

 

function LuaExportBeforeNextFrame()

rs, err = с:receive('*l')

if (rs ~= nil) then

_, _, pitch, bank, dCom = string.find(rs, "(.+) (.+) (.+)")

dCom = tonumber(dCom)

if dCom ~= -1 then LoSetCommand(dCom)

end

end

Link to comment
Share on other sites

  • 8 months later...

А почему нельзя к этому:

c:setoption("tcp-nodelay",true) -- set immediate transmission mode

добавить это:

c:settimeout(.001) -- set the timeout for reading the socket


Edited by USSR_Nic

Выпитая водка не влияет на ТТХ истребителей!!!

Слава ЕД!!! У меня есть АФМ к Су-33!!!!!!

Link to comment
Share on other sites

Поробовал так. DCS не виснет. Команда посылаемые 1 раз работают. Данные постоянно слать не надо.

Выпитая водка не влияет на ТТХ истребителей!!!

Слава ЕД!!! У меня есть АФМ к Су-33!!!!!!

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...