Приложение Adobe Flash для чтения из экземпляра SOCAT на Raspberry Pi? - PullRequest
0 голосов
/ 04 марта 2019

Мне непонятно, с чем связана моя проблема, так как я считаю, что все настроено правильно, но мое приложение Flash STILL не может установить соединение с «SOCAT» для считывания неподписанных последовательных данных с подключенного Arduino.

Краткое описание проекта:

Приложение Adobe Flash

  • Написано в ActionScript 2 (AS2.0)
  • У него есть камераобъект в нем, (но это, кажется, работает просто отлично, и не является фокусом здесь)

RPi 3B Rev.2

  • Установлен LAMP (Apache, MySQL, PHP и MyPHPAdmin)
  • Запуск экземпляра SOCAT при загрузке, используя следующую строку:

    socat -d -d -d -d -x TCP-LISTEN: 7777, reuseaddr, fork FILE: / dev / ttyUSB0, b9600, raw

Arduino, подключенный к RPi через USB-кабель (т. е. ttyUSB0 перечисляет как)

  • Arduino - запускает временный скетч, который отправляет последовательные данные каждую секунду или около того (строка: «данные» отправляются снова и снова)

Я проверил, что ОБА входящие данные Arduino отправляются (через Arduino IDE для проверки самой платы, а также), используя экземпляр PUTTY на RPI для установления соединения и проверки данных, отправляемых по линии ttyUSB0.и также получено через порт 127.0.0.1:7777

Arduino:

Arduino - PUTTY settings

SOCAT / RPi:

SOCAT - PUTTY settings

Когда я открываю одно из этих окон .. Я вижу:

data
data
data
data

Это то, что посылает Arduino.

Итак, на данный момент ..

У меня естьданные отправляются правильно.У меня есть данные, полученные должным образом.(по крайней мере, до уровня SOCAT)

Однако .. Я не могу (на всю жизнь) заставить мое приложение Adobe Flash подключиться к этому экземпляру SOCAT и прочитать эти входящие данные с подключенного через USB Arduino!!!

Я начал читать об этом .. и читал о политике безопасности, которая необходима Flash Player для этого соединения.

Итак, после некоторой работы я наконец-то получил следующеенастроить и работать правильно (по крайней мере, я верю, но если бы все было идеально, я бы не был здесь .. верно?):)

Я установил SSL с самозаверяющим сертификатом.Я (в конце концов) настроил сервер политики безопасности, используя мод Apache (разработанный только для этого сценария)

И когда я запускаю эту строку:

perl -e 'printf "<policy-file-request/>%c",0' | nc 127.0.01 843

Я получаю ссылку на политикувернулся ко мне:

<?xml version='1.0'?>
<!DOCTYPE cross-domain-policy SYSTEM
'http://www.adobe.com/xml/dtds/cross-domain-policy.dtd'>

<cross-domain-policy>
        <site-control permitted-cross-domain-policies='all'/>
        <allow-access-from domain='*' secure='false'/>
        <allow-http-request-headers-from domain='*' headers='*' secure='false'/>
</cross-domain-policy>

Я даже получил свой пользовательский для загрузки (который на самом деле является той же самой конфигурацией, но хотел посмотреть, разрешает ли «главный» файл настраиваемые политики, и это было/ is)

Может быть, ошибка на стороне Flash / AS?Вот как я пытаюсь установить соединение XMLSocket с работающим экземпляром SOCAT:

import flash.system.Security;

Security.allowDomain("*");
Security.allowInsecureDomain("127.0.0.1");

Security.loadPolicyFile("xmlsocket://127.0.0.1:843");


//instantiate instance
var rpi_usb0_Listener = new XMLSocket();

//create listeners:
//on connect
rpi_usb0_Listener.onConnect = function(result){
    if(result){
        //connected
        state_txt.text = "on-connect success";
    }else{
        //not connected
        state_txt.text = "on-connect failed";
    }
}

//on close
rpi_usb0_Listener.onClose = function(){
    //disconnected
    state_txt.text = "connection closed";
}

//on incoming date recieved
rpi_usb0_Listener.onXML = function(data){
    //do whatever   
    incomingData_txt.text += data;

    //close
    //rpi_usb0_Listener.close();
}


//make connection
if(!rpi_usb0_Listener.connect(null, 7777)){
    state_txt.text = "connection true";
}else{
    state_txt.text = "connection false";
}

Независимо от того, что я пытался .. Я никогда не могу подключиться.

Я получаю "при подключении«на экране» каждый раз .. (после 15-секундного тайм-аута)

Мне нужна помощь кого-то более знающего в этой области, чем мне кажется, так как я не могу установить соединение, чтобы спасти мою жизнь.

Если есть какая-то дополнительная информация, которую я могу предоставить, пожалуйста, спросите .. Если есть какой-нибудь файл журнала, я должен проверить, чтобы лучше понять, что происходит .. (пожалуйста, дайте мне знать)

Это моя линия / настройка SOCAT?Это не разрешает подключение из моего приложения Flash?

...