こんにちは。NoMaYです。CS+ V8.09.00のリリースノートに以下の記載がありました。試してみようかと思います。(デバッガも制御出来るのかな?)CS+ for CC V8.09.00 リリースノートR20UT5230JJ0100 Rev.1.00 2022.12.01www.renesas.com/jp/ja/document/rln/cs-cc-v80900-release-note#page=6「4.3 Python コンソールの機能改善4.3.1 Python 3 実行環境との外部通信機能の追加Python 3.x からCS+を制御する機能を追加しました。」[関連リンク]統合開発環境 CS+ 製品ページwww.renesas.com/jp/ja/software-tool/cs
こんにちは。NoMaYです。Python 3 実行環境との外部通信機能のヘルプは以下にありました。デバッグ向け機能しかありませんでしたね。とはいえ、ブレークポイントの設定/削除といった機能は見当たりませんね。top > Pythonコンソール編 > Python 3実行環境との外部通信機能/csplusモジュール関数tool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V8.09.00/CS+.chm/PythonConsole.chm/Output/py_Python_socket1-nav-1.html「C. Python 3実行環境との外部通信機能/csplusモジュール関数ここでは,Python 3実行環境との外部通信機能で使用するcsplusモジュールの関数について説明します。表 C.12 csplus モジュール関数
」
こんにちは。NoMaYです。以下のヘルプによると、Python 3 実行環境側からCS+へ以下の使用例のようにしてソケット通信を確立するようです。top > Pythonコンソール編 > Python 3実行環境との外部通信機能/csplusモジュール関数 > csplus.connecttool-support.renesas.com/autoupdate/support/onlinehelp/ja-JP/csp/V8.09.00/CS+.chm/PythonConsole.chm/Output/py_Python_socket2-nav-1.html「[使用例]
>>> import sys>>> sys.path.append("C:\Program Files (x86)\Renesas Electronics\CS+\CC\Plugins\PythonConsole\integration_service")>>> import csplus>>> csplus.connect()>>>
」この時にPython 3 実行環境側で読み込まれるソースは以下の場所にあります。<CS+インストールフォルダ>\CC\Plugins\PythonConsole\integration_service\
csplus.pyisserver\control_status_socket.pyisserver\csplus_server.pyisserver\csplus_socket.pyisserver\__init__.py
興味深いのは、経緯は分かりませんけれども、e2 studioにも同様のソースがあることです。e2 studio自身のintegration service機能の為に何かしらのソースがあることは分かりますけれども、好奇心として、なぜ csplus というフォルダ名にソースがあったり、かつソース中にも csplus の文字列があったり、といったところとか、ちょっと気になるところです。<e2 studio 2023-04サポートフォルダ>\.eclipse\com.renesas.platform_<識別番号>\Utilities\integration_service\
e2studio.pycsplus\after_trace_memory_full.pycsplus\breakpoint_info.pycsplus\break_condition.pycsplus\break_type.pycsplus\build.pycsplus\build_compile.pycsplus\build_link.pycsplus\common.pycsplus\compiler.pycsplus\debugger.pycsplus\debugger_breakpoint.pycsplus\debugger_debugtool.pycsplus\debugger_download.pycsplus\debugger_memory.pycsplus\debugger_option.pycsplus\debugger_watch.pycsplus\debug_tool.pycsplus\download_option.pycsplus\encoding.pycsplus\go_option.pycsplus\memory_option.pycsplus\micom_type.pycsplus\project.pycsplus\project_file.pycsplus\project_kind.pycsplus\step_option.pycsplus\trace_priority.pycsplus\utility.pycsplus\vendor_type.pycsplus\watch_option.pycsplus\xtime_info.pycsplus\__init__.pyisserver\control_status_socket.pyisserver\e2studio_server.pyisserver\e2studio_socket.pyisserver\__init__.py
こんにちは。NoMaYです。まだCS+インストールフォルダの下のソースをがっつりとは見ていませんけれども、ソケット通信ということで、原理的に考えれば以下のようなことも出来そうな気がしなくも無いです。(ソースの修正や移植が必要になるでしょうけれども。)(1) 別のパソコンからCS+に接続する(2) Windows以外にもLinuxやMacOSからCS+に接続する(3) Python 3以外のスクリプト言語やC/C++/C#/VisualBasicといった言語のコンパイラで作成したプログラムからCS+に接続する
こんにちは。NoMaYです。いざやってみるとうまくいきません。ファイアウォールとかの事情でしょうか、、、もう少しやってみます、、、
Python 3.11.4 (tags/v3.11.4:d2340ef, Jun 7 2023, 05:45:37) [MSC v.1934 64 bit (AMD64)] on win32Type "help", "copyright", "credits" or "license" for more information.>>> import sys>>> sys.path.append("C:\Renesas\CS+\CC\Plugins\PythonConsole\integration_service")>>> import csplus>>> csplus.connect()Exception in thread Thread-1 (run_thread):Traceback (most recent call last):Traceback (most recent call last): File "<stdin>", line 1, in <module> File "C:\Renesas2\Python311\Lib\threading.py", line 1038, in _bootstrap_inner File "C:\Renesas\CS+\CC\Plugins\PythonConsole\integration_service\csplus.py", line 13, in connect self.run() File "C:\Renesas2\Python311\Lib\threading.py", line 975, in run csplus.connect() self._target(*self._args, **self._kwargs) File "C:\Renesas\CS+\CC\Plugins\PythonConsole\integration_service\isserver\csplus_socket.py", line 50, in run_thread File "C:\Renesas\CS+\CC\Plugins\PythonConsole\integration_service\isserver\csplus_server.py", line 32, in connect csplus_socket.connect((CSPLUS_IP_ADDR, int(csplus_port_no))) csplus_socket.connect(get_csplus_port_no())ConnectionRefusedError: [WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。 File "C:\Renesas\CS+\CC\Plugins\PythonConsole\integration_service\isserver\csplus_socket.py", line 34, in connect raise Exception("CS+ Server Socket handshake failed")Exception: CS+ Server Socket handshake failed>>>
こんにちは。NoMaYです。やっと気付いたのですけれども、CS+でPythonコンソールを開くと、コンソールのタブとサンプルスクリプトのタブの2つのタブが表示されて、そのサンプルスクリプトのタブの方に以下のドキュメントがあり、それに気付かないと、追加で必要なPythonコンポーネントがあることとか、全然分かんないですね、、、「Python 3.x でCS+を制御する(技術プレビュー)Python 3.xでCS+を制御する方法を技術プレビューとして紹介します。はじめにCS+は、IronPython 2.7によるPython実行環境を提供していますが、多くのPython実行環境はPython 3.xに移行しています。弊社では将来のCS+でPython 3.xの実行環境を提供することを検討していますが、正式機能としての提供に先立ち、技術プレビューとしてPython 3.xでCS+を制御する方法を紹介します。概要開発中の非公式機能としてCS+に搭載されている、外部通信機能を用いてPython 3.xからCS+を制御します。本サンプルは技術プレビューであり、正式な機能ではありません。以下の点にご注意ください。 •外部通信機能の動作は開発中であり無保証です。•外部通信機能を正式機能として提供することを検討しておりますが、現在とは異なる実装・仕様となる可能性があります。 CS+の外部通信機能の実行環境は以下の通りです。CS+がサーバとなり、クライアント側から外部通信用ライブラリを実行してCS+と通信します。。。。以下省略。。。」
こんにちは。NoMaYです。と思ったら、その先に以下の記載があって、単に今まで気付いていなかった昔のドキュメントの残骸なのかも知れません。「外部通信用ライブラリは下記に格納されています。(デフォルトのインストール先)C:\Program Files (x86)\Renesas Electronics\CS+\CC\Plugins\PythonConsole外部通信機能の実行環境は.NET Framework 4.5.2以降です。Python 3.xで実行するためにPython.NETを使用します。そのため、Python.NETがサポートする Python 3.5から3.8までが本サンプルのPython 3.x実行環境となります。(2021年12月時点)また、外部通信用ライブラリは32bitプロセスでの動作が前提となっているため、32bit版のPythonを使用します。。。。以下省略。。。」[追記]さすがに自分の恥を晒すことになってしまいますけれども、ドキュメントの最後に以下の日付がありましたね、、、「2022/01/20」
こんにちは。NoMaYです。元の設定に戻しても動作しました。記憶を辿ると、CS+側で実行するserver.Start()をserver.Startと打ち間違えたのかも。以下のエラーメッセージをGoogle検索して調べていったところ、私の場合には、以下のブログ記事のやり方で動作させることが出来るようになりました。(そして、私の場合には、Windowsを再起動した後に、でした。)
[WinError 10061] 対象のコンピューターによって拒否されたため、接続できませんでした。
「対象のコンピューターによって拒否されたため、接続できませんでした」VisualStudioのclient.Connectのlocalhost 80でエラー出たときの対処法 - 文系エンジニアが生き残るためのサイトselife5.com/visualstudio-localhost80-error/
こんにちは。NoMaYです。VSCodeのPython拡張機能をインストールして、VSCodeでスクリプトを書いてVSCodeで実行させて、CS+に接続してみました。インストール方法は以下のQiita記事を参考にしました。Windows端末にVS CodeでPython開発環境を用意してみるqiita.com/SAITO_Keita/items/ddcde4fdcdf5e5eaa933[追記]Google検索: VSCode Python 環境 構築 site:qiita.comwww.google.com/search?q=VSCode+Python+環境+構築+site:qiita.com[ここまで追記]以下、VSCodeとCS+の画面コピーです。
import syssys.path.append("C:\Renesas\CS+\CC\Plugins\PythonConsole\integration_service")import cspluscsplus.connect()csplus.launch_debug_session("DefaultBuild")csplus.download_loadmodule("0")pc = csplus.get_register("0", "pc")print(hex(pc))csplus.reset_debug_session("0")pc = csplus.get_register("0", "pc")print(hex(pc))
なお、CS+のプロジェクトフォルダでは、以下のPythonコンソールスクリプトを置いて、プロジェクト読み込み時に自動実行されるようにしています。<mtpjプロジェクトファイルベース名>.py
print("Restarting server...")print("server.Stop()")server.Stop()print("server.Start()")server.Start()
こんにちは。NoMaYです。VSCodeのSerial Monitor拡張機能にソケット通信機能がありましたので、インストールして、以下のCS+のPythonコンソールスクリプトを作成して、試してみました。(スクリプトはCS+のプロジェクトフォルダに置いて、プロジェクト読み込み時に自動実行されるようにしています。なお、Python 3スクリプトとは関係は無くて、かつ、制御する側では無くて、制御される側となるCS+のPythonコンソールスクリプトです。あと、概念確認をしたかったという程度の、エラーチェック無し版です。)Serial Monitormarketplace.visualstudio.com/items?itemName=ms-vscode.vscode-serial-monitorlearn.microsoft.com/en-us/cpp/embedded/serial-monitor?tabs=visual-studio-code<mtpjプロジェクトファイルベース名>.py
import socket# Bind the socket to any IP address and the specified portHOST = ''PORT = 60916# Create a socket for listening incoming connection requestslisten_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)# Bind the socket to the specified IP address and portlisten_socket.bind((HOST, PORT))# Set the socket in listen modelisten_socket.listen(1)# Accept the connectionconn, address = listen_socket.accept()while 1: # Receive command to CS+ command = conn.recv(2048) if not command: break print "RECV: " , repr(command) result = repr(eval(command)) + "\n" print "SEND: " , result # Send response from CS+ conn.send(result)conn.close()listen_socket.close()# IronPython https://ironpython.net/documentation/
以下、VSCodeとCS+の画面コピーです。
こんにちは。NoMaYです。そういえば、MATLAB/SimulinkからCS+を制御するとかしていましたね。MATLAB/SimulinkとEmbedded Target for Renesas CS+がRXとRL78に対応していましたねcommunity-ja.renesas.com/cafe_rene/forums-groups/tools/f/forum21/7654/matlab-simulink-embedded-target-for-renesas-cs-rx-rl78