プログラム製作日記

世の中にないプログラムをつくれたらよいなと思いながらプログラムをしていくブログです

Visual Studioで使える言語のアクセス修飾子


 

今回はVisual Studioで使われる言語(Visual Basic .Net, C#)で使えるアクセス修飾子の参考リンクをまとめてみました。

 

Visual Basic .Net

smdn.jp

C#

learn.microsoft.com

隙をみてアップデートしていきます。

 

今回は以上になります。

 


参照リンク

 

基本的な所ですが、 button1_ClickとClick eventとのつなげ方は以下が参考になります。

デザイナー上で配置したボタンをクリックすれば元になるbutton1_Clickは自動で生成されますが念のため。

csharp.keicode.com

 以下はその他の参照リンク

www.javadrive.jp

qiita.com

mogmo811.hatenablog.com

atmarkit.itmedia.co.jp

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit), C#

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

.NET Core 3.1

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

*このページで紹介されているのはあくまでサンプルプログラムで、実際に製品のコードを作成される場合は適切なエラー処理などを実装するようにお願いします。また、動作環境によっては想定した動きにならない場合があります。適宜、実行環境に合わせてプログラムの内容を最適化ください。

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス05-共有ファイルによる異言語-PythonとC#-での作成プログラム間の通信)

マルチプロセスでのプロセス間でのデータの共有をためしてみました。

今回はPythonで作ったプログラムとC#で作ったプログラムを並列で動かし、共有ファイルを使ってデータのやり取りを試してみました。

PythonC#の両方のコード資産を同時に使いたいときに参考になるかと思います。

 

<Python側の動作の流れ>

example.txtというテキストファイルに、文字列を書き込み、その後、無限ループでexample.txtの内容読み込み、標準出力などに出力する。

 

<C#側の動作の流れ>

example.txtに指定した文字列を書き込む。

 

<成功した場合>

pythonで実行しているexample.txtの標準出力への出力内容が途中から書き換わる。

 

Pythonのプログラムは以下の通りです。

 

import mmap

f = open('example.txt', 'w')
f.write('555')

f.close()

with open("example.txt", "r+b") as f:
    mm = mmap.mmap(f.fileno(), 0)

    while True:
        mm.seek(0)
        mode=mm.readline()
        print(mode)

 

 >C#で製作した画面は以下の通りです。


 >C#のプログラムは以下の通りです。

button1_Clickが追加したコードです。

他は自動生成される内容やおまじない。

 

Form.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

 

namespace TestSharedFileWithPython
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string filepath = "example.txtの絶対パス";

            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance); // .Net CoreではShift-JISを.NET Frameworkと同じコードでは使えないので、このコードが必要。

 

            try
            {
                Encoding sjisEnc = Encoding.GetEncoding("Shift_JIS");

                //ファイルをオープンする
                using (FileStream fs = new FileStream(filepath,
                                                        FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
                {
                    using (StreamWriter sw = new StreamWriter(fs, sjisEnc))
                    {
                        sw.Write(textBox1.Text);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

 

 

>スタートアッププロジェクトの設定

ソリューションエクスプローラ上のソリューションを右クリックして表示されるコンテキストメニュー内に"スタートアッププロジェクトの設定"

という項目があるので、

そこでマルチスタートアッププロジェクトを選択し、

並列して実行したいPythonC#のプロジェクトのアクションを"開始"に設定してOKボタンを押してください。

 

 

この設定をした後でデバックの実行を開始すれば、並列してPythonC#のプロジェクトが実行されます。

 

>実行結果

実行直後のPythonプログラムの出力は以下の通り。

 

並列起動しているC#のプログラムでtttと書き込むと、

 

Pythonプログラムの出力内容が書き換わります。

 

今回は以上になります。

 


参照リンク

 

基本的な所ですが、 button1_ClickとClick eventとのつなげ方は以下が参考になります。

デザイナー上で配置したボタンをクリックすれば元になるbutton1_Clickは自動で生成されますが念のため。

csharp.keicode.com

 以下はその他の参照リンク

www.javadrive.jp

qiita.com

mogmo811.hatenablog.com

atmarkit.itmedia.co.jp

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit), C#

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

.NET Core 3.1

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

*このページで紹介されているのはあくまでサンプルプログラムで、実際に製品のコードを作成される場合は適切なエラー処理などを実装するようにお願いします。また、動作環境によっては想定した動きにならない場合があります。適宜、実行環境に合わせてプログラムの内容を最適化ください。

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス04-共有メモリ02)

今回はマルチプロセスで、プロセス間でデータの共有をためしてみました。

今回も共有メモリに関してです。

 

前回の記事はこちら

tut2020aaa.hatenablog.jp

 今回はファイルを利用した共有メモリのデータのやり取り方法になります。実在するファイルを利用するので、異なる言語間でのデータの共有がしやすいです。

 

今回のプログラムは以下を参照しました。

qiita.com

 上記リンクのtest1.py, test2.pyを並行に実行する必要があるため、subprocessを使用して並行実行しました。以下を参考にしました。

qiita.com

コード(test3.py)は以下の通りです。

 

import subprocess
from time import sleep

subprocess.Popen(["python", "Test1.py"])

sleep(5) #5秒待つ。

subprocess.Popen(["python", "Test2.py"])

 

このtest3.pyを実行すると、example.txt(上記でも参照している

Pythonでの共有メモリの実現方法(mmap.mmap) - Qiita

の内容を参照ください)が00から01に書き換わるのが確認できます。

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス03-共有メモリ01)

 

 今回はマルチプロセスで、プロセス間でデータの共有をためしてみました。

 今回利用するのは共有メモリです。

 

以下のサイトに掲載されているコードを動かしてみました。

 

runebook.dev

→上記のサイトの”共有メモリ”のパラグラフのコードはコピペして実行で問題なく動かすことができました。

 

qiita.com→上記のサイトの"共有メモリ(Shared memory)"のコードは、targetの引数に指定されている関数名とmain内の変数名が一致しているため、わたしの環境ではそのままでは動かず、エラーが吐き出されました。

 

f:id:tut2020aaa:20210813003314p:plain

 

main内のprocessXという変数をpX(Xは1, 2, 3のいずれか)の改変をすることで正常に動くようになりました。

 

・改変前

>process1 = Process(target=process1, args=[count, array])

 

・改変後

>p1 = Process(target=process1, args=[count, array])

 

 ArrayクラスやValueクラスを使用して、共有メモリによる値の引き渡しができることを確認しました。

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス02)

 

 今回はマルチプロセスで、プロセス間でデータの共有をためしてみました。

 

以下のページに乗っているコードを実行しました。

qiita.com

試したのは2個目のコードで、空の辞書を関数の一つ目の引数として渡す処理が追加されているほうです。

 

上記のページに載っているのと同じ結果になりました。

f:id:tut2020aaa:20210604113424p:plain

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

 

Python 16.10.21111.19

Python - Conda サポート 16.10.21111.19

Python - Django サポート 16.10.21111.19

Python - プロファイル サポート 16.10.21111.19

 

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

Visual StudioでPython (マルチプロセス01)

 

 今回はマルチプロセスを試してみました。

最終目標はプロセス間通信の達成です。

それができれば、ユーザーインターフェースC#, アルゴリズムPythonという使い方ができます。

 

まずは以下を参考にテストコードを実行してみました。

docs.python.org

このリンクに掲載されているコードで、Processクラスのパラグラフに掲載されているコードを実行してみました(コードはリンク先を参照ください)。

 

以下の結果になりました。

f:id:tut2020aaa:20210509140826p:plain



ひとまず、別プロセスを立ち上げるのには成功しました。

他にもWebにはサンプルコードが掲載されているので、Visual Studioで試したときに問題なくそれらが立ち上がるかを検証して、Pythonでのマルチプロセスプログラミングに慣れていきたいと思います。

 


開発環境: Visual Studio Community 2019

OS: Windows 10 Pro 64bit バージョン1909

使用言語:Python3.7 (64bit)

パソコン性能: CPU Intel Core i5-4310M 2.70GHz, メモリ: 8GB

 

Visual StudioPythonのライブラリを追加する方法は以下が参考になります。

docs.microsoft.com

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村

ARMマイコンプログラミング(2020年 STM32ディスカバリ事始め スタートアップスクリプトエラー個所)

 下のほうにTrueStduioのインストールからプログラム作成、ビルドしたプログラムを書き込むところまでをまとめた記事のリンクを張り付けてあるので参照ください。


 

 True StudioでSTM32ディスカバリ用のコードを作成し、ビルドして書き込むと、以下のエラーがでてきます。

f:id:tut2020aaa:20210124075209p:plain

 

そこでデバック構成⇒スタートアップスクリプトとたどると、以下の内容が確認できました。13行目はloadです。

f:id:tut2020aaa:20210124074921p:plain

 

この部分を消すとエラーは起こらなくなりますが、代わりにビルドしたプログラムはマイコンには書き込まれなくなります。

ただ、デバッグはできそうなので、

 

・ビルド→TrueStudio

・書き込み→ST-LINK utility

デバッグ→TrueStudio

 

という使い分けが必要そうです。

 


<まずはここから>

TrueStduioのインストールからプログラム作成、ビルドしたプログラムを書き込むところまで。

tut2020aaa.hatenablog.jp

 

<参照>

*1 hexファイルの出力の設定は以下のページを参照しました。

gsmcustomeffects.hatenablog.com

 

*2 STM32 value line DiscoveryはST-LINKの基盤が搭載されているので、USBケーブルで基板をつなげれば専用のデバッガ/プログラマは不要なのですが、hexタイプのファイルをST-LINK utilityを使て書き込まないといけないので、以下のページを参照しました。

tri-s.world.coocan.jp

 

 ランキングに参加してます。

よかったらクリックをお願いします。

にほんブログ村 IT技術ブログ Tipsへ
にほんブログ村