forked from chiyu1468/AirTrapMine
測試功能整理 有bug修正中
講解程式先 commit 一版
parent
f79aaf86fa
commit
84119b788e
@ -0,0 +1,14 @@
|
|||||||
|
import socket
|
||||||
|
|
||||||
|
SOCKET_PATH = "/tmp/unix_socket_example"
|
||||||
|
|
||||||
|
# 建立 socket
|
||||||
|
client = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||||
|
client.connect(SOCKET_PATH)
|
||||||
|
|
||||||
|
# 傳送資料
|
||||||
|
client.sendall(b"Hello from client!")
|
||||||
|
data = client.recv(1024)
|
||||||
|
print("📤 Server replied:", data.decode())
|
||||||
|
|
||||||
|
client.close()
|
||||||
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import rclpy
|
||||||
|
from rclpy.node import Node
|
||||||
|
from std_msgs.msg import String
|
||||||
|
import time
|
||||||
|
|
||||||
|
# import mavros_msgs.srv
|
||||||
|
|
||||||
|
class TalkerNode(Node):
|
||||||
|
def __init__(self):
|
||||||
|
start_time = time.time()
|
||||||
|
super().__init__('talker_node')
|
||||||
|
end_time = time.time()
|
||||||
|
print(f"Node initialization took {end_time - start_time:.2f} seconds")
|
||||||
|
|
||||||
|
self.publisher_ = self.create_publisher(String, 'hahatest/_1', 10)
|
||||||
|
self.timer = self.create_timer(1.0, self.timer_callback) # 每秒執行一次
|
||||||
|
self.get_logger().info('TalkerNode has been started.')
|
||||||
|
|
||||||
|
def timer_callback(self):
|
||||||
|
msg = String()
|
||||||
|
msg.data = 'Hello, ROS 2!'
|
||||||
|
self.publisher_.publish(msg)
|
||||||
|
self.get_logger().info(f'Published: "{msg.data}"')
|
||||||
|
|
||||||
|
def main(args=None):
|
||||||
|
rclpy.init(args=args)
|
||||||
|
node = TalkerNode()
|
||||||
|
|
||||||
|
print("Before sleep")
|
||||||
|
time.sleep(5) # 等待 5 秒鐘
|
||||||
|
print("After sleep")
|
||||||
|
try:
|
||||||
|
start_time = time.time()
|
||||||
|
while time.time() - start_time < 10: # 持續 10 秒鐘
|
||||||
|
rclpy.spin_once(node)
|
||||||
|
time.sleep(1) # 每秒執行一次
|
||||||
|
finally:
|
||||||
|
node.destroy_node()
|
||||||
|
rclpy.shutdown()
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
@ -0,0 +1,33 @@
|
|||||||
|
import socket
|
||||||
|
import os
|
||||||
|
|
||||||
|
# socket file path
|
||||||
|
SOCKET_PATH = "/tmp/unix_socket_example"
|
||||||
|
|
||||||
|
# 若檔案存在就先刪除
|
||||||
|
if os.path.exists(SOCKET_PATH):
|
||||||
|
os.remove(SOCKET_PATH)
|
||||||
|
|
||||||
|
# 建立 socket
|
||||||
|
server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||||
|
|
||||||
|
# 綁定 socket 到檔案
|
||||||
|
server.bind(SOCKET_PATH)
|
||||||
|
server.listen(1)
|
||||||
|
|
||||||
|
print("🔌 Server waiting for connection...")
|
||||||
|
|
||||||
|
# 等待 client 連線
|
||||||
|
conn, _ = server.accept()
|
||||||
|
print("✅ Client connected.")
|
||||||
|
|
||||||
|
while True:
|
||||||
|
data = conn.recv(1024)
|
||||||
|
if not data:
|
||||||
|
break
|
||||||
|
print("📥 Received:", data.decode())
|
||||||
|
conn.sendall(b"Echo: " + data)
|
||||||
|
|
||||||
|
conn.close()
|
||||||
|
server.close()
|
||||||
|
os.remove(SOCKET_PATH)
|
||||||
Loading…
Reference in New Issue