Что именно интересует? Какой-то уровень имею
Привет!
Сейчас я вывожу данные через DDE.
Принцип работы такой
Сначала передается вся таблица, а затем передается только строка, в которой произошли изменения
Но вывод по DDE слишком медленный и я хочу выводить данные по именному каналу (Pipe)
Возможно ли в QLua сделать вывод так же, как по DDE ?
Привет!
Сейчас я вывожу данные через DDE.
Принцип работы такой
Сначала передается вся таблица, а затем передается только строка, в которой произошли изменения
Но вывод по DDE слишком медленный и я хочу выводить данные по именному каналу (Pipe)
Возможно ли в QLua сделать вывод так же, как по DDE ?
Если ещё актуально, то ниже простой скрипт для Quik для приема и передачи данных по Pipe.
Pipe сервер нужно реализовывать отдельно. Пример сервера на с++ во вложении.
is_run = true
pipe = "\\\\.\\pipe\\test"
pipe_cycle = 100
buffer_size = 256
function main()
message("QLua test: "..pipe, 1)
is_read_write = false
is_massage = false
hPipe = nil
read_buffer = nil
send_buffer = "test"
while is_run do
if hPipe then
-- send to pipe
hPipe:seek("set")
is_read_write = hPipe:write(send_buffer)
is_read_write = hPipe:flush()
-- read from pipe
read_buffer = hPipe:read(buffer_size)
if read_buffer then
message("Read buffer: " .. tostring(read_buffer), 1)
is_read_write = true
else
is_read_write = false
end
end
-- if read write error pipe then reconnect
if not hPipe or not is_read_write then
if hPipe then
hPipe:close()
hPipe = nil
end
if not hPipe then
hPipe = io.open(pipe, "a+b")
if not hPipe and not is_massage then
message("Pipe Not Ok: " .. tostring(hPipe), 3)
is_massage = true
elseif hPipe then
message("Pipe Ok: " .. tostring(hPipe), 2)
is_massage = false
end
end
end
sleep(pipe_cycle)
end
-- close pipe
if hPipe then
hPipe:close()
end
end
function OnStop()
is_run = false
end
Привет!
Сейчас я вывожу данные через DDE.
Принцип работы такой
Сначала передается вся таблица, а затем передается только строка, в которой произошли изменения
Но вывод по DDE слишком медленный и я хочу выводить данные по именному каналу (Pipe)
Возможно ли в QLua сделать вывод так же, как по DDE ?
Вы же по большей части на паскале пишите. Вот тут есть пример для делфи. http://www.delphisite.ru/faq/sozdanie-imennykh-kanalov
Если ещё актуально, то ниже простой скрипт для Quik для приема и передачи данных по Pipe.
Pipe сервер нужно реализовывать отдельно. Пример сервера на с++ во вложении.
Спасибо
Но если
pipe_cycle = 100
То это значит, что скрипт будет спать 100 мс?
Какой же смысл применять Pipe, если запрос раз в 100мс?
Вы же по большей части на паскале пишите. Вот тут есть пример для делфи. http://www.delphisite.ru/faq/sozdanie-imennykh-kanalov
Спасибо
Спасибо
Но если
То это значит, что скрипт будет спать 100 мс?
Какой же смысл применять Pipe, если запрос раз в 100мс?
Это всего лишь пример возможности реализации передачи данных.
Если нужно передавать данные моментально, то придется использовать колбэк функции и 0 мс в цикле.
А это означает 100% загрузку одного ядра процессора.
p.s.
На мой взгляд лучше использовать передачу данных через общую память.
Реализация проще, lua позволяет это сделать.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования