Sowohl RaspberryPi als auch Pyson haben gerade erst begonnen und es ist ziemlich schwierig. Also habe ich es aus dem ernsthaften Wunsch heraus versucht, Python auf VisualStudio zu debuggen. Irgendwie habe ich das Gefühl, ich kann gehen. Ich denke nicht, dass die Hürden für die Vorbereitung der Umwelt hoch sind. Warum also nicht versuchen?
Ich möchte die Änderungsschleife mit Sakura Editor, das Übertragen mit WinSCP und das Ausführen von Python von TeraTerm reduzieren.
Eine einfache mit geringer Funktionalität ist gut.
Ich möchte Dinge vermeiden, die nicht mehr benötigt werden, wenn ich mich an Pyson gewöhnt habe.
Es scheint, dass Python auch mit Visual Studio funktioniert. Es scheint, dass Sie auch Ihre bevorzugte "Schrittausführung" durchführen können.
Ich konnte nicht mehrere Pläne in Betracht ziehen, da ich nicht viel über Python weiß, aber ich möchte es verschieben, weil es schwierig ist, die "Schrittausführung" im Thema der Stärkung des Debuggens wegzuwerfen. Um es in Visual Studio auszuführen, kann es nicht unter Win10 ausgeführt werden, da es nicht kompiliert werden kann (es ist nicht bekannt, ob der Ausdruck geeignet ist).
** Kann nicht kompiliert werden, da keine Bibliothek vorhanden ist. Wenn du es nicht hast, musst du es schaffen. ** ** **
Win10 verfügt nicht über GPIO. Wenn Sie also eine temporäre GPIO-Bibliothek erstellen, können Sie diese ohne Kompilierungsfehler ausführen? Wir werden mit der Strategie antworten. RPI. Ich benutze GPIO, aber ich bin nicht besonders darüber. Im Moment ist es nur die bekannteste Wahl.
Windows10 64bit home VisualStudio 2019 Community Python C# Python 3.7 .NET 4.7.2 psycopg2 2.8.6 Npgsql v4.1.5 PostgreSQL PostgreSQL 13.0 64-bit A5:SQL Mk-2 2.15.1
RPI der GPIO-Bibliothek. Machen Sie GPIO mit einem Dummy. Erstellen Sie ein Windows-Formularprogramm in C # für den Betrieb. RPI. PostgreSQL wird für die Kommunikation zwischen GPIO und C # verwendet. Dies liegt daran, dass die Verwendung der Kommunikation zwischen Prozessen problematisch ist und DB für diese Verwendung in Bezug auf Protokolle nützlicher ist. Sie können damit mit SQL spielen, wie Sie möchten. Python ist psicopg2 und C # ist Npgskl, um eine Verbindung zur Datenbank herzustellen.
** Simulieren Sie E / A mit SQL mit GPIO-Bibliothek und C #. ** ** **
Ich habe eine Datenbank namens pizero erstellt und zwei Tabellen erstellt. Die Eingabetabelle dient zur Eingabe von C # in die GPIO-Bibliothek. Die Ausgabetabelle dient zur Ausgabe von der GPIO-Bibliothek nach C #.
create database pizero;
create table outputTable(
id serial
,hiduke timestamp
,pin integer
,data integer
,memo varchar(20)
);
create table inputTable(
id serial
,hiduke timestamp
,pin integer
,data integer
,memo varchar(20)
);
Wählen Sie Python. Wenn Sie es nicht finden können, müssen Sie es installieren. Es ist fertig. Öffnen Sie die Python-Paketverwaltung. Geben Sie psycopg2 ein. Der mit dem Aufwärtspfeil scheint ein Update zu sein, daher denke ich, dass er aktualisiert werden sollte. Es war verschieden. Klicken Sie zu Beginn auf Den folgenden Befehl ausführen. Klicken Sie auf Jetzt befördern. Es ist fertig. Es wurde der Liste hinzugefügt. Machen Sie die Quelle von Python. Beim Import ist ein Fehler aufgetreten.
piTes1.py
import time
import RPi.GPIO as GPIO
PIN_IN = 2
PIN_OUT =3
PIN_OUT2 =4
GPIO.setwarnings(False)
print('start')
GPIO.setmode( GPIO.BCM )
GPIO.setup( PIN_IN, GPIO.IN )
GPIO.setup( PIN_OUT, GPIO.OUT )
GPIO.setup( PIN_OUT2, GPIO.OUT )
for i in range(3):
inData = GPIO.input( PIN_IN )
if( inData == GPIO.LOW ):
print('PIN_OUT')
GPIO.output( PIN_OUT, GPIO.HIGH )
GPIO.output( PIN_OUT2, GPIO.LOW )
else:
print('PIN_OUT2')
GPIO.output( PIN_OUT, GPIO.LOW )
GPIO.output( PIN_OUT2, GPIO.HIGH )
GPIO.cleanup()
print('end')
Fügen Sie einen neuen Artikel hinzu. Erstellen Sie ein Python-Paket. Der Name ist wichtig. Es ist fertig. Fügen Sie auch einen neuen Artikel hinzu. Ich werde es in das Paket aufnehmen, das ich zuvor gemacht habe. Ich möchte es in ein Paket packen. Erstellen Sie eine leere Physon-Datei. Der Name ist wichtig. Es wurde der Liste hinzugefügt. Erstellen Sie die Quelle für die GPIO-Bibliothek. Die Verbindungsinformationen zur Datenbank müssen mit der Umgebung übereinstimmen. Server: localhost Port: 5432 Datenbank: pizero Benutzer: postgres Passwort: postgres
GPIO.py
import time
import psycopg2
BCM = 1
IN = 1
OUT = 2
LOW = 0
HIGH = 1
outCount = 0
inCount = 0
connection = psycopg2.connect("host=localhost port=5432 dbname=pizero user=postgres password=postgres")
connection.autocommit = True
def setwarnings(flg):
return 0
def setmode(mode):
global outCount
global inCount
cur = connection.cursor()
cur.execute("select coalesce(max(id),0) from outputtable")
row = cur.fetchone()
outCount = row[0]
cur.execute("select coalesce(max(id),0) from inputtable")
row = cur.fetchone()
inCount = row[0]
cur.close()
return 0
def setup(pin,type):
return 0
def cleanup():
connection.close()
return 0
def input(pin):
global inCount
ret = 0
rowcount = 0
while rowcount == 0:
strSQL = "select * from inputtable where id > " + str(inCount)
cur = connection.cursor()
cur.execute(strSQL)
row = cur.fetchone()
rowcount = cur.rowcount
if rowcount == 0:
print('wait')
time.sleep(5.0)
if rowcount > 0:
print(row)
inCount = row[0]
ret = row[3]
cur.close()
return ret
def output(pin,data):
global outCount
strSQL = "insert into outputtable(hiduke, pin, data, memo) values (now(), " + str(pin) + ", " + str(data) + ", 'output')"
cur = connection.cursor()
cur.execute(strSQL)
cur.close()
outCount += 1
return 0
Es werden lediglich die von der GPIO-Bibliothek verwendeten Funktionen entsprechend definiert. Die SQL-Verarbeitung für die Kommunikation ist in der Eingabe- und Ausgabefunktion enthalten. Eingabefunktion Warten Sie endlos auf Einfügungen von C #. Alles, was größer als die Ihnen bekannte ID ist, wird als neue Daten betrachtet. Ich werde warten, aber ich werde nur einen bekommen. Ausgabefunktion Einfügen, um C # zu informieren. Ich werde es dich nur wissen lassen, also warte nicht.
Beim Import ist kein Fehler aufgetreten. Ich bin glücklich.
Machen Sie es mit Windows Form. Es ist fertig. NuGet. Wählen Sie die Referenz aus und suchen Sie nach Npgskl. Es installieren. Es wurde zu den Referenzeinstellungen hinzugefügt. Machen Sie ein Formular. Die C # -Quelle wurde kompiliert.
Form1.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 Npgsql;
namespace piTes1CS
{
public partial class Form1 : Form
{
string connString = "Server=localhost;Port=5432;User Id=postgres;Password=postgres;Database=pizero";
NpgsqlConnection conn;
int inCount = 0;
int outCount = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
inCount = 0;
outCount = 0;
conn = new NpgsqlConnection(connString);
conn.Open();
var strSQL = "select coalesce(max(id),0) maxid from inputtable";
var command = new NpgsqlCommand(strSQL, conn);
var dataReader = command.ExecuteReader();
if (dataReader.HasRows)
{
dataReader.Read();
inCount = (int)dataReader["maxid"];
}
dataReader.Close();
strSQL = "select coalesce(max(id),0) maxid from outputtable";
command = new NpgsqlCommand(strSQL, conn);
dataReader = command.ExecuteReader();
if (dataReader.HasRows)
{
dataReader.Read();
outCount = (int)dataReader["maxid"];
}
dataReader.Close();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
conn.Close();
}
private void btnRead_Click(object sender, EventArgs e)
{
this.txtGPIO3.BackColor = Color.White;
this.txtGPIO4.BackColor = Color.White;
var strSQL = "select * from outputtable where id > " + outCount;
var command = new NpgsqlCommand(strSQL, conn);
var dataReader = command.ExecuteReader();
if (dataReader.HasRows)
{
dataReader.Read();
outCount = (int)dataReader["id"];
int pin = (int)dataReader["pin"];
int data = (int)dataReader["data"];
string memo = (string)dataReader["memo"];
Console.WriteLine("outCount=" + outCount + " inCount=" + inCount);
if (pin == 3)
{
this.txtGPIO3.Text = data.ToString();
this.txtGPIO3.BackColor = Color.Yellow;
}
if (pin == 4)
{
this.txtGPIO4.Text = data.ToString();
this.txtGPIO4.BackColor = Color.Yellow;
}
}
else
{
Console.WriteLine("wait");
}
dataReader.Close();
}
private void btnGPIO2_Click(object sender, EventArgs e)
{
if (this.txtGPIO2.TextLength > 0)
{
var strSQL = "insert into inputtable(hiduke, pin, data, memo) values (now(), 2, " + this.txtGPIO2.Text + ", 'btnWriteGPIO2')";
var command = new NpgsqlCommand(strSQL, conn);
command.ExecuteNonQuery();
inCount++;
}
}
}
}
Das Gegenteil von Python geschieht in C #. Fügen Sie die Daten für die Eingabefunktion der GPIO-Bibliothek mit der Schaltfläche "Senden" ein. Mit der Empfangsschaltfläche erhalten Sie Daten für die Ausgabefunktion der GPIO-Bibliothek. Der Wert wird auf GPIO3 oder GPIO4 mit der Empfangstaste angezeigt.
Verwenden Sie zum Reinigen der Tabelle "Abschneiden". Es initialisiert auch den ID-Wert.
truncate table inputtable RESTART IDENTITY;
truncate table outputtable RESTART IDENTITY;
Starten Sie zwei Visual Studios und führen Sie Pyson bzw. C # aus. Ich habe Python gestartet. Ich habe C # gestartet. Da Python auf die Eingabefunktion wartet, wird GPIO2 GPIO zugewiesen. Ich habe gerade HIGH eingestellt und die Sendetaste gedrückt. Python scheint gut zu funktionieren. Nachdem Python die Ausgabefunktion zweimal ausgeführt hat, drücken Sie die Empfangstaste. GPIO3 ist GPIO. Es wird als NIEDRIG angezeigt. Drücken Sie die Empfangstaste erneut. GPIO4 ist GPIO. Es wurde als HIGH angezeigt. Es scheint gut zu funktionieren. Dies ist der Status von DB nach dessen Abschluss.
** Durch Erstellen eines Dummys der GPIO-Bibliothek ist es möglich, unter Win10 anstelle von RaspberryPi zu debuggen. ** ** ** In Anbetracht der Funktion auf der C # -Seite denke ich, dass es ausreicht, sie auszuführen, während das SQL geändert wird. ** Es ist kein Simulator, es ist ein Testcode, also müssen Sie etwas erstellen, das der Bewegung von Pyson entspricht **, aber wenn Sie es immer noch als einfach beurteilen können, scheint es einen Versuch wert zu sein. Es handelt sich um ein Sensorsystem. Wenn Sie das Protokoll auf der tatsächlichen Maschine abrufen und in die Tabelle einfügen, können Sie möglicherweise dieselbe Bewegung wie auf der tatsächlichen Maschine ausführen. Sie können es durchlaufen und den Wert der ausgeführten Variablen überprüfen. Auch COREi5 vor 10 Jahren ist kein Feind der Nullserie, es ist bequem.
Ich habe L Chika in der Nullserie nur wegen der IoT-Atmosphäre ausprobiert. Der nächste ist. .. ..
Derzeit gibt es zwei starke Feinde auf dem Steckbrett. Es ist ein Kreiselsensormodul und ein Motortreiber-IC, aber was wird passieren? Obwohl es weniger Teile hat als der instabile Multi-Vibrator L Chika.
Je mehr ich ein Softwarebuch lese, desto mehr kann ich tun, aber warum ist dieses System (elektronische Schaltung) nutzlos (nicht hilfreich)?
** Für Herausforderer elektronischer Arbeit auf handwerklicher Ebene ist der GPIO-Anschluss der Auswärtige. ** ** **
Ich muss mich auf die starken Gegner auf dem Steckbrett von Away konzentrieren, damit ich nicht viel Kraft habe, um Python zu vermeiden. Weil es eine Ebene ist, die den Betrieb des instabilen Multivibrators nicht erklären kann.
Recommended Posts