*WPF*我试图用另一种方法访问TCP套接字,但它抛出了一个错误?

2024-09-30 01:28:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道代码不能工作,但它可以阻止我去解释我的问题。 目前,我正在尝试在Windows GUI和作为从机的linux之间建立通信。 Raspi应该控制一些步进电机。我希望他能把事情汇报回来。为此,我试图保持插座打开。任何关于更好的protokoll的想法都欢迎! 我打开一个到Rasberry Pi的tcp连接,并通过它发送一些数据

namespace WpfApp2 { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { private TcpClient tcp; private delegate void UpdateLogCallBack(string strMessage); public MainWindow() { InitializeComponent(); } private void _Write(string msg) { NetworkStream stream = tcp.GetStream(); Byte[] data = System.Text.Encoding.ASCII.GetBytes(msg); stream.Write(data, 0, data.Length); } public void Button_Click(object sender, RoutedEventArgs e) { try { tcp = new TcpClient(ip_box.Text,Convert.ToInt32(port_box.Text)); Byte[] data = System.Text.Encoding.ASCII.GetBytes("Hallo"); NetworkStream stream = tcp.GetStream(); // Send the message to the connected TcpServer. stream.Write(data, 0, data.Length); stream.Close(); tcp.Close(); } catch(Exception ex) { MessageBox.Show("Error"); } } private void Button_Click_1(object sender, RoutedEventArgs e) { _Write(msg_box.Text); } private void ip_box_TextChanged(object sender, TextChangedEventArgs e) { } private void msg_box_TextChanged(object sender, TextChangedEventArgs e) { } } }

当我按下按钮时,它就崩溃了。我如何设置连接并访问它。对服务器部分的一些帮助也会很有帮助。遗憾的是,我不得不用python编写。 以下是我目前的想法:

print"Pi is starting..." import socket print"Socket importet..." import time print"Time importet..." import RPi.GPIO as GPIO print"GPIO importet..." import sys import thread print"-----------" ip = "192.168.178.120" port = 5335 print"Ip: "+ip print"Port: "+str(port) axis_1_to_deg=22 axis_2_to_deg=111 def moveaxis1(a): x=0 mvstp1=int(a) if(mvstp1<0): GPIO.output(stepper1_dir,GPIO.HIGH) mvstp1=int(mvstp1)* -1 elif(mvstp1>0): GPIO.output(stepper1_dir,GPIO.LOW) while x<int(mvstp1): GPIO.output(stepper1_step,GPIO.LOW) GPIO.output(stepper1_step,GPIO.HIGH) x=x+1 time.sleep(0.002) def moveaxis2(a): x=0 mvstp2=int(a) if(mvstp2<0): GPIO.output(stepper2_dir,GPIO.HIGH) mvstp2=int(mvstp2)* -1 elif(mvstp2>0): GPIO.output(stepper2_dir,GPIO.LOW) while x<int(mvstp2): GPIO.output(stepper2_step,GPIO.LOW) GPIO.output(stepper2_step,GPIO.HIGH) x=x+1 time.sleep(0.00005) def moveaxis3(a): x=0 mvstp3=int(a) if(mvstp3<0): GPIO.output(stepper3_dir,GPIO.HIGH) mvstp3=int(mvstp3)* -1 elif(mvstp3>0): GPIO.output(stepper3_dir,GPIO.LOW) while x<int(mvstp3): GPIO.output(stepper3_step,GPIO.LOW) GPIO.output(stepper3_step,GPIO.HIGH) x=x+1 time.sleep(0.00005) print"Thread 3 Declared" print"Threads Declared" x=0 stepper1_step=40 stepper2_step=36 stepper3_step=26 stepper1_dir=38 stepper2_dir=32 stepper3_dir=24 calib_1=8 calib_2=10 GPIO.setmode(GPIO.BOARD) GPIO.setup(calib_1,GPIO.IN) GPIO.setup(calib_2,GPIO.IN) GPIO.setup(stepper1_step,GPIO.OUT) GPIO.setup(stepper1_dir,GPIO.OUT) GPIO.setup(stepper2_step,GPIO.OUT) GPIO.setup(stepper2_dir,GPIO.OUT) GPIO.setup(stepper3_step,GPIO.OUT) GPIO.setup(stepper3_dir,GPIO.OUT) GPIO.setmode(GPIO.BOARD) pos_axis1 = 0 pos_axis2 = 0 pos_axis3 = 0 print " " sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind((ip, port)) sock.listen(1) print("RasPI Server up / awaiting connection...") connection,client_addres =sock.accept() # buffer size is 1024 bytes while True: data = connection.recv(1024) print "Received message:", data if(data.startswith( 'stp')): print "Commands for Steppers are being proccesed" stp,move_stp1,move_stp2,move_stp3 = data.split(',') print("Steps Axis 1"+move_stp1) print("Steps Axis 2"+move_stp2) print("Steps Axis 3"+move_stp3) print"------------" print"Threads are starting..." in_pos_1=int(move_stp1)*axis_1_to_deg in_pos_2=int(move_stp2)*axis_2_to_deg in_pos_3=int(move_stp3)*axis_2_to_deg z1 = pos_axis1 - in_pos_1 z2 = pos_axis2 - in_pos_2 z3 = pos_axis3 - in_pos_3 thread.start_new_thread(moveaxis1,(z1,)) thread.start_new_thread(moveaxis2,(z2,)) thread.start_new_thread(moveaxis3,(z3,)) pos_axis1 = in_pos_1 pos_axis2 = in_pos_2 pos_axis3 = in_pos_3 print"Position 1: " +str(pos_axis1) print"Position 2: " +str(pos_axis2) print"Position 3: " +str(pos_axis3) elif(data =="calib"): ready = False while ready==False: if(GPIO.input(calib_1)==True): moveaxis1(1) else: ready=True moveaxis1(-40*axis_1_to_deg) ready = False while ready==False: if(GPIO.input(calib_2)==True): moveaxis2(1) else: ready=True moveaxis2(-85*axis_2_to_deg) elif(data=="set_0"): pos_axis1=0 pos_axis2=0 pos_axis3=0 elif(data=="exit"): break print" " GPIO.cleanup() sock.close() print"Fertig"

Tags: toinposoutputdatamovegpiostep

热门问题