C#のwindowsのformからドライバー接続をしたいのですが...
モータ電流のセンシングを行うために
ドライバとPCで通信を行い、モータのサーボをONなどの初期セッティングをしようとしています。
https://qiita.com/mag2/items/d15bc3c9d66ce0c8f6b1
を参照て試しているところです。
発生している問題・エラーメッセージ
$exception {"ポート 'COM3' へのアクセスが拒否されました。"} System.UnauthorizedAccessException
該当のソースコード
C#
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.Ports; namespace SerialTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { serialPort1.BaudRate = 38400; serialPort1.Parity = Parity.None; serialPort1.DataBits = 8; serialPort1.StopBits = StopBits.One; serialPort1.Handshake = Handshake.None; serialPort1.PortName = portComboBox.Text; serialPort1.Open(); } private void Form1_Load(object sender, EventArgs e) { string[] ports = SerialPort.GetPortNames(); foreach (string port in ports) { portComboBox.Items.Add(port); } if (portComboBox.Items.Count > 0) portComboBox.SelectedIndex = 0; } private void button2_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write(textBox2.Text + "\n"); } } delegate void SetTextCallback(string text); private void Response(string text) { if (textBox1.InvokeRequired) { SetTextCallback d = new SetTextCallback(Response); BeginInvoke(d, new object[] { text }); } else { textBox1.AppendText(text + "\n"); } } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { string str = serialPort1.ReadLine(); Response(str); } private void button3_Click(object sender, EventArgs e) { serialPort1.Close(); } } } namespace SerialTest { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { serialPort1.BaudRate = 38400; serialPort1.Parity = Parity.None; serialPort1.DataBits = 8; serialPort1.StopBits = StopBits.One; serialPort1.Handshake = Handshake.None; serialPort1.PortName = portComboBox.Text; serialPort1.Open(); } private void Form1_Load(object sender, EventArgs e) { string[] ports = SerialPort.GetPortNames(); foreach (string port in ports) { portComboBox.Items.Add(port); } if (portComboBox.Items.Count > 0) portComboBox.SelectedIndex = 0; } private void button2_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Write(textBox2.Text + "\n"); } } delegate void SetTextCallback(string text); private void Response(string text) { if (textBox1.InvokeRequired) { SetTextCallback d = new SetTextCallback(Response); BeginInvoke(d, new object[] { text }); } else { textBox1.AppendText(text + "\n"); } } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { string str = serialPort1.ReadLine(); Response(str); } private void button3_Click(object sender, EventArgs e) { serialPort1.Close(); } } }
試したこと
boadrateの変更は行いました
補足情報(FW/ツールのバージョンなど)
Visual Stadio 2019
FW 4.7