C# 코드에 문제가 있거나 재능이 부족합니다. 저는 블루투스를 통해 로봇을 제어하기 위해이 코드를 사용하고 내가 누를 때 나는 그것이 잘 작동하고 있습니다 W - 앞으로, S - 뒤로, A - 왼쪽, D - 오른쪽, Q - 앞으로 왼쪽, E를 - 앞으로를 오른쪽, Z - 뒤로 왼쪽, 는 X - 뒤로 오른쪽, 는 O - 로봇 팔을 들어 올려 P는 - 팔을 내려 놓고, N - 그립을 열고 M이 - 닫 그립, Y - 모든 명령을 중지내 코드에서 Control.KeyUp 이벤트를 사용하는 방법?
이제는 Keydown 명령을 통해 처리되며 정상적으로 작동합니다. 문제는 내가 키를 누르지 않을 때 어떻게 이러한 명령을 멈추게되는지 모른다는 것입니다. 임시 수정으로 모든 작업을 중지하는 "Y"키를 사용했지만 keyUp 또는 이와 유사한 것을 사용하여이 문제를 해결하는 더 좋은 방법이 있다고 확신합니다.
제 명령으로 어쩌면 한 가지 예를 들어 주시겠습니까? W가 더 이상 눌러지지 않고 로봇을 멈추게하려면 어떻게해야합니까?
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 AForge.Video;
namespace RoverControl
{
public partial class Form1 : Form
{
MJPEGStream stream;
public Form1()
{
InitializeComponent();
}
// Declare the comands for Rover control//
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode.ToString() == "W") // Keyboard characeter "W" //
try
{
serialPort1.Write("F"); // Passing the command "Forward" through letter "F" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover."); // Exception in the case letter "W" is pressed without connection being established//
}
if (e.KeyCode.ToString() == "S") // Keyboard characeter "S" //
try
{
serialPort1.Write("B"); // Passing the command "Backward" through letter "B" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "A") // Keyboard characeter "A" //
try
{
serialPort1.Write("L"); // Passing the command "Left" through letter "L" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "D") // Keyboard characeter "D" //
try
{
serialPort1.Write("R"); // Passing the command "Right" through letter "R" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "Q") // Keyboard characeter "Q" //
try
{
serialPort1.Write("G"); // Passing the command "Forward Left" through letter "G" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "E") // Keyboard characeter "E" //
try
{
serialPort1.Write("I"); // Passing the command "Forward Right" through letter "I" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "Z") // Keyboard characeter "Z" //
try
{
serialPort1.Write("H"); // Passing the command "Backward Left" through letter "H" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "X") // Keyboard characeter "X" //
try
{
serialPort1.Write("J"); // Passing the command "Backward Right" through letter "J" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "O") // Keyboard characeter "O" //
try
{
serialPort1.Write("O"); // Passing the command "Up" through letter "O" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "P") // Keyboard characeter "P" //
try
{
serialPort1.Write("P"); // Passing the command "Down" through letter "P" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "N") // Keyboard characeter "N" //
try
{
serialPort1.Write("N"); // Passing the command "Open" through letter "N" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "M") // Keyboard characeter "M" //
try
{
serialPort1.Write("M"); // Passing the command "Close" through letter "M" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "C") // Keyboard characeter "C" //
try
{
serialPort1.Write("C"); // Passing the command "" through letter "C" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "c") // Keyboard characeter "c" //
try
{
serialPort1.Write("c"); // Passing the command "" through letter "c" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "V") // Keyboard characeter "V" //
try
{
serialPort1.Write("V"); // Passing the command "" through letter "V" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "v") // Keyboard characeter "v" //
try
{
serialPort1.Write("v"); // Passing the command "" through letter "v" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "U") // Keyboard characeter "U" //
try
{
serialPort1.Write("U"); // Passing the command "" through letter "U" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "u") // Keyboard characeter "u" //
try
{
serialPort1.Write("u"); // Passing the command "" through letter "u" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "Y") // Keyboard characeter "Y" //
try
{
serialPort1.Write("S"); // Passing the command "Stop" through letter "S" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
}
void stream_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bmp = (Bitmap) eventArgs.Frame.Clone();
pictureBox1.Image = bmp;
}
private void Start_Click(object sender, EventArgs e)
{
string IP = "";
IP = textBox3.Text;
stream = new MJPEGStream(IP);
stream.NewFrame += stream_NewFrame;
try
{
stream.Start();
}
catch (Exception)
{
MessageBox.Show("Please enter valid IP address.");
}
}
private void Stop_Click(object sender, EventArgs e)
{
stream.Stop();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string COM = "";
COM = comboBox1.Text;
serialPort1.PortName = COM;
serialPort1.BaudRate = 9600;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
serialPort1.Open();
}
catch (Exception)
{
var dialogResult = MessageBox.Show("Please select correct Comunication Port.");
}
}
private void Disconnect_Click(object sender, EventArgs e)
{
serialPort1.Close();
}
}
}
좋아, 코드를 추가 할 때 나는 여전히 동일한 문제가 있다고 제안합니다. W 키를 눌러 앞으로 이동하고 W 키를 놓으면 계속 진행합니다. 코드를 잘못 편집 했습니까?
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 AForge.Video;
namespace RoverControl
{
public partial class Form1 : Form
{
MJPEGStream stream;
public Form1()
{
InitializeComponent();
}
// Declare the comands for Rover control//
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode.ToString() == "W") // Keyboard characeter "W" //
try
{
serialPort1.Write("F"); // Passing the command "Forward" through letter "F" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover."); // Exception in the case letter "W" is pressed without connection being established//
}
if (e.KeyCode.ToString() == "S") // Keyboard characeter "S" //
try
{
serialPort1.Write("B"); // Passing the command "Backward" through letter "B" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "A") // Keyboard characeter "A" //
try
{
serialPort1.Write("L"); // Passing the command "Left" through letter "L" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "D") // Keyboard characeter "D" //
try
{
serialPort1.Write("R"); // Passing the command "Right" through letter "R" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "Q") // Keyboard characeter "Q" //
try
{
serialPort1.Write("G"); // Passing the command "Forward Left" through letter "G" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "E") // Keyboard characeter "E" //
try
{
serialPort1.Write("I"); // Passing the command "Forward Right" through letter "I" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "Z") // Keyboard characeter "Z" //
try
{
serialPort1.Write("H"); // Passing the command "Backward Left" through letter "H" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "X") // Keyboard characeter "X" //
try
{
serialPort1.Write("J"); // Passing the command "Backward Right" through letter "J" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "O") // Keyboard characeter "O" //
try
{
serialPort1.Write("O"); // Passing the command "Up" through letter "O" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "P") // Keyboard characeter "P" //
try
{
serialPort1.Write("P"); // Passing the command "Down" through letter "P" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "N") // Keyboard characeter "N" //
try
{
serialPort1.Write("N"); // Passing the command "Open" through letter "N" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "M") // Keyboard characeter "M" //
try
{
serialPort1.Write("M"); // Passing the command "Close" through letter "M" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "C") // Keyboard characeter "C" //
try
{
serialPort1.Write("C"); // Passing the command "" through letter "C" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "c") // Keyboard characeter "c" //
try
{
serialPort1.Write("c"); // Passing the command "" through letter "c" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "V") // Keyboard characeter "V" //
try
{
serialPort1.Write("V"); // Passing the command "" through letter "V" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "v") // Keyboard characeter "v" //
try
{
serialPort1.Write("v"); // Passing the command "" through letter "v" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "U") // Keyboard characeter "U" //
try
{
serialPort1.Write("U"); // Passing the command "" through letter "U" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "u") // Keyboard characeter "u" //
try
{
serialPort1.Write("u"); // Passing the command "" through letter "u" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
if (e.KeyCode.ToString() == "Y") // Keyboard characeter "Y" //
try
{
serialPort1.Write("S"); // Passing the command "Stop" through letter "S" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
}
void Form1_KeyUp(object sender, KeyEventArgs e)
{
try
{
serialPort1.Write("S"); // Passing the command "Stop" through letter "S" in arduino code//
}
catch (Exception)
{
MessageBox.Show("Please establish the connection with rover.");
}
}
void stream_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bmp = (Bitmap) eventArgs.Frame.Clone();
pictureBox1.Image = bmp;
}
private void Start_Click(object sender, EventArgs e)
{
string IP = "";
IP = textBox3.Text;
stream = new MJPEGStream(IP);
stream.NewFrame += stream_NewFrame;
try
{
stream.Start();
}
catch (Exception)
{
MessageBox.Show("Please enter valid IP address.");
}
}
private void Stop_Click(object sender, EventArgs e)
{
stream.Stop();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
string COM = "";
COM = comboBox1.Text;
serialPort1.PortName = COM;
serialPort1.BaudRate = 9600;
}
private void button1_Click(object sender, EventArgs e)
{
try
{
serialPort1.Open();
}
catch (Exception)
{
var dialogResult = MessageBox.Show("Please select correct Comunication Port.");
}
}
private void Disconnect_Click(object sender, EventArgs e)
{
serialPort1.Close();
}
}
}
[KeyUp 이벤트를 어떻게 catch합니까? (코드의 샘플을주세요)] (http://stackoverflow.com/questions/3674810/how-do-i-catch-keyup-event-sample-of-code-please) – meJustAndrew
그냥 주석 : ''''else if'' 문 – Jules
줄스, "W"포워드 행동에 대한 예를 들어 주시겠습니까? – Slavisha