news 2026/8/25 7:48:19

使用python编写机械臂上位机时常用库及函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用python编写机械臂上位机时常用库及函数

另一篇:Arduino作机械臂下位机时用到的函数_躺躺我啊的博客-CSDN博客

(一)串口操作 pyserial

1.serial = serial.Serial(‘COM1’, 115200)

打开COM1并设置波特率为115200,COM1只适用于Windows。

2.serial.open()

打开串口。

3.serial.isOpen()

判断当前串口是否已经打开。

4.serial.flushInput()

清除输入缓冲区数据。

5.serial.Serial(port,baud)

初始化comm端口对象 如果给出了一个“端口”,那么该端口将立即被打开 否则返回一个处于关闭状态的串口对象

(二)GUI编程 tkinter

1.设置窗口

root = Tk() # 创建根窗口 root.wm_title("mechanical arm controler 0.0") root.iconbitmap('icon.ico') #设置窗口图标 root.resizable(width=True, height=True) #允许更改根窗口大小 sw = root.winfo_screenwidth() #宽度 sh = root.winfo_screenheight()#高度 ww = 1360 wh = 710 x = (sw-ww) / 2 y = (sh-wh) / 2 root.geometry("%dx%d+%d+%d" %(ww,wh,x,y)) #窗口的宽和高

2.定义标签页

nb = tkinter.ttk.Notebook(root, width=1355, height=680) #Notebook是一个Widget容器控件,该控件有许多选项卡 #选择不同选项卡时可以看到不同的子控件内容,也可以当做子窗口内容 nb.place(x=0, y=0) #位置 tab1 = tkinter.ttk.Frame(nb) #一个Frame就是一个展示单纯的矩形区域的控件 nb.add(tab1, text=' 主控 ')

3.scrollbar滚动条组件及Listbox

scrollbar(滚动条)用于滚动一些组件的可见范围,根据方向可分为垂直滚动条(scrollBar)和水平滚动条(scrollBarx)。Scrollbar 组件常常被用于实现文本、画布和列表框的滚动。

Listbox(列表框)组件用于显示一个选择列表。Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色。根据组件的配置,用户可以从列表中选择一个或多个选项。

prog=Frame(tab1) #显示程序区域 prog.place(x=0,y=150) #定义了显示程序区域的位置 scrollbar = Scrollbar(prog) #垂向滚动条初始化 scrollbar.pack(side=RIGHT, fill=Y) #靠右,充满Y轴 #创建一个空列表 tab.progView = Listbox(progframe,width=110,height=20, yscrollcommand=scrollbar.set) #当发生事件ListboxSelect,即被选中时,执行progViewselect(),用于显示其行数 tab.progView.bind('<<ListboxSelect>>',progViewselect)

4.config

用来配置tkinter中控件和字体的样式,比如颜色、大小等。

almStatusLab.config(text="Move A must start with a Beg followed by Mid & End", bg = "red")

(三)字符串为操作对象的函数

1.mystring.write(str)

通过串行端口输出字符串str。

2.mystring.encode(encoding,errors)

以encoding指定的编码格式编码字符串,如UTF-8。errors参数可以指定不同的错误处理方案。

(四)numpy

1.numpy.delete(arr,obj,axis=None)

适用于numpy ndarray数组。但是numpy数组不支持删除数组元素,返回的是删除了某些元素的新数组。

• arr:输入向量

• obj:被删除的子向量

• axis:删除子向量所在轴,若默认,则返回一个被拉平的向量。

2.numpy.array(object, dtype=None)

用于创建数组,其中object为数组中的对象,可以为单个值,列表,元胞等。dtype为所创建数组中的数据类型。

分别存储圆弧的起始点、中点及终止点 A = np.array([CXbeg, CYbeg, CZbeg]) B = np.array([CXmid, CYmid, CZmid]) C = np.array([CXend, CYend, CZend])

3.np.linalg.norm(x,ord,axis,keepding)

用于求取向量的范数,其中:

  • x为所求向量(其实就是数组)
  • ord为范数类型,可以为1、2、∞
  • axis为处理类型,其中,axis=1表示按行向量处理,求多个行向量的范数,axis=0表示按列向量处理,求多个列向量的范数,axis=None表示矩阵范数
  • keepding为是否保持矩阵的二维特性,True表示保持矩阵的二维特性,False则相反。
#求取圆内接三角形的三边长 a = np.linalg.norm(C - B) b = np.linalg.norm(C - A) c = np.linalg.norm(B - A)

4.np.column_stack(a,b)与np.hstack(c,d)

np.column_stack(a,b)将a、b两个数组按列合并;np.hstack(c,d)将c、d两个数组按水平方向叠加。

P = np.column_stack((A, B, C)).dot(np.hstack((b1, b2, b3))) #np.column_stack将ABC三点坐标按列排列;np.hstack将b1b2b3水平方向合并

5.numpy.cross(a, b, axisa=-1, axisb=-1, axisc=-1, axis=None)

该函数返回两个(数组)向量a, b的叉积,其中

  • axisa :int, 可选定义向量的a轴。默认情况下,最后一个轴。
  • axisb :int, 可选定义向量的b轴。默认情况下,最后一个轴。
  • axisc :int, 可选包含叉积向量的c轴。如果两个输入向量的维数均为2,则将其忽略,因为返回值为标量。默认情况下,最后一个轴。
  • axis :int, 可选如果定义,则定义矢量和叉积的a,b和c轴。覆盖axisa,axisb和axisc。

(五)其他

1.time.sleep(t)

按给定的秒数t暂停执行,t可以是浮点数,以指示更精确的睡眠时间。由于任何捕获的信号将在执行该信号的捕获程序之后终止,所以实际的暂停时间可能会小于请求的时间。

time.sleep(.01) #延时0.01s

2.try: except:

try: 可能产生异常的代码块 except [ (Error1, Error2, ... ) [as e] ]: 处理异常的代码块1 except [ (Error3, Error4, ... ) [as e] ]: 处理异常的代码块2 except [Exception]: #[Exception]可省略 处理其它异常

[] 内部分可以使用,也可以省略。try有且仅有一个,但 except 可为多个,且每个 except 都可以同时处理多种异常。

3.open(file, mode='r')

用于打开一个文件,并返回文件对象。在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。file为文件路径(相对或者绝对路径),mode为文件打开模式(可省略)。

4.pickle.dump(obj, file)

序列化对象,将对象obj保存到文件file中去。obj表示要保存的对象,file必须有write()接口,file可以是一个以'w'打开的文件或者是一个String对象,也可以是任何可以实现write()接口的对象。

pickle.dump(value,open("ARbot.cal","wb")) #以二进制格式打开文件ARbot.cal,只用于写入

5.round(x,n)

返回浮点数x的四舍五入值,n为小数点位数。

J1AngCur = round(J1NegAngLim + (J1StepCur * J1DegPerStep),2) #四舍五入,小数点为2

6.循环结构for-in与range(start, stop, step)

range创建一个整数列表,一般用在 for 循环中。

• start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);

• stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5

• step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

for-in经常用于遍历字符串、列表,元组,字典等。

for i in range(numWayPts+1): #给i赋值为从1到numWayPts+1的数组
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/25 7:46:39

C语言内存操作函数深度解析:malloc、memcpy、memset与避坑指南

1. 项目概述&#xff1a;为什么我们需要关注内存操作函数&#xff1f;在C语言的世界里&#xff0c;内存管理是程序员从入门到精通都无法绕开的核心课题。与许多现代高级语言不同&#xff0c;C语言将内存管理的“方向盘”完全交给了开发者。这种“手动挡”模式赋予了程序极高的性…

作者头像 李华
网站建设 2026/8/25 7:46:32

模2运算与CRC校验:从二进制奇偶性到差错检测实战

1. 模2运算&#xff1a;从概念到实战的完整拆解如果你接触过计算机网络、数据通信或者数字电路&#xff0c;那么“模2运算”这个词你一定不陌生。它听起来像是一个高深的数学概念&#xff0c;但实际上&#xff0c;它的核心思想简单得惊人&#xff1a;只关心奇偶性&#xff0c;不…

作者头像 李华
网站建设 2026/8/25 7:44:26

Mendeley文献管理工具:从入门到精通,打造高效学术工作流

1. 从文献混乱到高效管理&#xff1a;为什么你需要Mendeley如果你正在读研、搞科研&#xff0c;或者从事任何需要大量阅读和引用文献的工作&#xff0c;那么你肯定对下面这个场景不陌生&#xff1a;电脑里塞满了从各个数据库下载的PDF文件&#xff0c;文件名千奇百怪&#xff0…

作者头像 李华
网站建设 2026/8/25 7:42:22

C语言基础:求结构体数组中的最大值并按序输出

C语言基础&#xff1a;求结构体数组成员列表中的成绩最大值并按序输出 1. 用结构体数组进行传参 例1&#xff1a; #include "stdafx.h" #include <stdio.h> #define member 5//成员数 #define NAME_LEN 20//姓名最大长度struct st { int id;char name[NAME…

作者头像 李华
网站建设 2026/8/25 7:41:17

STM32内存分配全解析:从变量存储到链接脚本实战

1. 项目概述&#xff1a;从“我的变量去哪儿了&#xff1f;”说起如果你在STM32开发中&#xff0c;曾经对着一个明明赋值了却读出来是乱码的全局变量发呆&#xff0c;或者疑惑为什么某个数组稍微大一点程序就“跑飞”了&#xff0c;又或者纠结于该用static还是malloc&#xff0…

作者头像 李华
网站建设 2026/8/25 7:41:09

三、elasticsearch之插件x-pack许可证安装说明

概要 在elasticsearch中有30天的试用期&#xff0c;我找到网上大神的一些文章&#xff0c;试用了之后发现可以进行破解使用&#xff0c;整个过程比较简单&#xff0c;特此写下笔记 http://ip:9100/?auth_userelastic&auth_password123456 现在发现都访问不了&#xff0c;查…

作者头像 李华