当前位置: 首页 > wzjs >正文

国内flask做的网站醴陵网站制作

国内flask做的网站,醴陵网站制作,株洲网站设计外包运营,做私彩网站代理会坐牢吗文章目录 一、基本原理二、注意事项三、基础配置四、项目实战4.1、检测COM组件是否已注册4.2、获取所有可用方法与属性(动态探索)4.3、典型应用实例🎯 (1)控制Word:批量写入并保存文档📊&#x…

文章目录

  • 一、基本原理
  • 二、注意事项
  • 三、基础配置
  • 四、项目实战
    • 4.1、检测COM组件是否已注册
    • 4.2、获取所有可用方法与属性(动态探索)
    • 4.3、典型应用实例
      • 🎯 (1)控制Word:批量写入并保存文档
      • 📊(2)控制Excel:批量写入数据、保存图表
      • 📧(3)控制Outlook:自动发送邮件
      • 🔬(4)调用科研设备(如:蔡司扫描电镜 CZ.EMApiCtrl.1)
      • 接口方法汇总表(如:CZ.EMApiCtrl.1)
        • 📘 一、命令类(Execute):用于执行动作性指令,如启动扫描、自动对焦、保存图像、重置状态等。
        • 📗 二、参数类(Set/Get):用于设置/读取成像参数,如倍率、聚焦、像散、扫描窗口、探测器选择等。
        • 📙 三、图像采集类(Grab)
        • 📒 四、状态与控制类
        • 🧪 五、实战模板

一、基本原理

win32com.client模块是Windows平台Python中实现COM(Component Object Model)自动化的核心模块。通过该模块,Python程序能够直接访问并操控支持COM接口的硬件设备和软件系统,实现自动化控制与高效数据交互,从而显著提升操作效率与准确性。

核心功能

  • 自动化设备控制:通过COM接口调用设备功能,实现设备启动、参数配置、状态监测、任务调度等自动化操作。
  • 数据交互:读取设备状态和采集数据,或向软件系统传递指令与参数,完成双向通信和实时控制。
  • 兼容性强:支持微软Office系列、工业设备、实验仪器、第三方软件等多种COM组件,适用范围广泛。
应用方向常见目标对象示例用途
Office自动化Word、Excel、PowerPoint、Outlook报告生成、批量写表、邮件发送
系统调用WMI、文件系统对象(Scripting.FileSystemObject)自动化管理、任务调度
科研仪器控制CZ.EMApiCtrl.1Leica.Microscope自动采图、参数调节、批量图像获取
视频音频处理Windows Media Player嵌入播放、远程控制播放
工业控制OPC服务器、PLC组件自动化生产、设备信息读取

二、注意事项

  • Windows专用:win32com.client只在Windows平台可用,不支持Linux或macOS。
  • 接口名区分大小写:比如:“Word.Application”、“Excel.Application” 必须严格一致。
  • COM接口必须注册:使用的程序或设备必须在系统中注册了对应的COM接口,否则Dispatch会失败。
# 使用 win32com.client 通过 COM 接口保存文件到指定路径时,
#       若目标路径已存在同名文件(如 demo.xlsx),Excel 默认会弹出覆盖确认窗口。
#       在自动化场景中,该弹窗将阻塞 Python 脚本执行,直至用户手动响应,严重影响流程稳定性。
# 具体表现包括:
#     - 程序在 SaveAs 调用处暂停执行;
#     - 弹窗可能在后台隐藏,用户难以察觉;
#     - 若 Excel 处于隐藏模式(Visible=False),弹窗不可见,程序表面“无响应”。
# 鉴于 win32com 无法自动响应此类弹窗,建议在保存前主动检测并删除同名文件,以确保流程顺畅。

三、基础配置

# 安装:				pip install pywin32
# 检查是否成功安装:	import win32com.client

四、项目实战

4.1、检测COM组件是否已注册

import winregdef is_com_registered(prog_id):try:# 使用Python内置的winreg模块访问注册表,判断对应键是否存在。key = winreg.OpenKey(winreg.HKEY_CLASSES_ROOT, prog_id)winreg.CloseKey(key)return Trueexcept FileNotFoundError:return Falseimport win32com.client
from pythoncom import com_error
def is_com_registered(prog_id):try:# 使用win32com.client.Dispatch尝试实例化COM对象,捕获异常判断是否注册。win32com.client.Dispatch(prog_id)return Trueexcept com_error:return Falseif __name__ == '__main__':prog_id = 'Word.Application'  # 应用程序的ProgIDif is_com_registered(prog_id):print(f'COM组件"{prog_id}"已注册')else:print(f'COM组件"{prog_id}"未注册')

4.2、获取所有可用方法与属性(动态探索)

import win32com.clientword = win32com.client.Dispatch("Word.Application")
print("获取对象属性:", dir(word))  # 列出所有属性和方法# 打印对象所有属性
for i in dir(word):print(i)

4.3、典型应用实例

🎯 (1)控制Word:批量写入并保存文档

在这里插入图片描述

from win32com import clientword = client.Dispatch("Word.Application")
word.Visible = True  # 显示word
doc = word.Documents.Add()
doc.Content.Text = "Hello, COM!"
doc.SaveAs("d:\\py\\demo.docx")
doc.Close()
word.Quit()

📊(2)控制Excel:批量写入数据、保存图表

在这里插入图片描述

import os
from win32com import clientexcel = client.Dispatch("Excel.Application")  # 创建Excel对象
excel.Visible = True  # 显示Excel
# excel.Visible = False  # 后台执行,提升效率
###############################################################
wb = excel.Workbooks.Add()  # 创建工作簿
sheet = wb.Sheets(1)  # 获取工作表# 写入数据
sheet.Cells(1, 1).Value = "Hello, COM!"
for i in range(1, 6):sheet.Cells(i, 1).Value = f"数据{i}"sheet.Cells(i, 2).Value = i * 10
###############################################################
save_path = "d:\\py\\demo.xlsx"  # 保存路径
if os.path.exists(save_path):  # 若文件已存在,则删除os.remove(save_path)
wb.SaveAs(save_path)  # 保存文件
###############################################################
wb.Close(SaveChanges=False)  # 清理资源
excel.Quit()  # 退出Excel

📧(3)控制Outlook:自动发送邮件

from win32com import clientoutlook = client.Dispatch("Outlook.Application")
mail = outlook.CreateItem(0)
mail.To = "receiver@example.com"
mail.Subject = "自动发送测试"
mail.Body = "这是一封由Python发送的测试邮件"
mail.Send()

🔬(4)调用科研设备(如:蔡司扫描电镜 CZ.EMApiCtrl.1)

如果设备厂商注册了COM组件,厂商提供API文档(包含方法、属性名等)。如"CZ.EMApiCtrl.1"(蔡司扫描电镜),可直接控制:

from win32com import client# 创建 COM 对象
mic = client.Dispatch('CZ.EMApiCtrl.1')# 初始化设备
mic.Initialise("MachineName")# 移动样品台到指定位置
mic.MoveStageDoubles(10.0, 20.0, 5.0, 0.0, 0.0, 0.0)# 设置图像采集参数
mic.Set("AP_MAG", 5000.0)
mic.Set("AP_FOCUS_FINE", 1.5)# 采集图像并保存
mic.Grab(0, 0, 1024, 768, 0, r"C:\Images\sample_image.png")

接口方法汇总表(如:CZ.EMApiCtrl.1)

方法签名参数说明返回值示例用法说明
Initialise(machine_name)machine_name: 字符串,设备标识名mic.Initialise("EM-1")初始化设备连接
InitialiseRemoting()mic.InitialiseRemoting()启用远程控制通道
StartEMServer()mic.StartEMServer()启动EM服务
ClosingControl()mic.ClosingControl()关闭控制连接
AboutBox()mic.AboutBox()弹出接口信息窗口
Set(param_name, value)param_name: 参数名
value: 控制值
mic.Set("AP_FOCUS_FINE", 2.5)设置参数值
Get(param_name, default_value)param_name: 参数名
default_value: 默认值
(状态, 值)mic.Get("AP_FOCUS_FINE", 0.0)[1]获取参数值
SetMulti(param_name, values)values: 元组mic.SetMulti("SCAN_SIZE", (512, 384))设置多值参数
GetMulti(param_name)param_name: 多值参数名元组mic.GetMulti("SCAN_SIZE")获取多值参数
GetLimits(param_name)param_name: 参数名(最小值, 最大值)mic.GetLimits("AP_FOCUS_FINE")获取参数取值范围
SetNotify(param_name, flag)flag: 是否启用变更通知mic.SetNotify("AP_STIGMA", True)设置监听标志
Grab(x0, y0, w, h, reduce, filename)图像ROI及文件路径参数mic.Grab(0, 0, 512, 384, 0, "C:\\img\\scan.png")图像采集
Execute(command)command: 字符串命令mic.Execute("CMD_AUTOFOCUS")执行控制命令
GetStagePosition()(x, y, z, t, r, m)mic.GetStagePosition()获取样品台位置
MoveStage(x, y, z, t, r, m)单精度坐标值mic.MoveStage(0.1, 0.2, 0, 0, 0, 0)移动样品台
MoveStageDoubles(x, y, z, t, r, m)双精度坐标值mic.MoveStageDoubles(0.1, 0.2, 0, 0, 0, 0)精准移动
LogonToEMServer(username, password)用户登录名与密码mic.LogonToEMServer("admin", "1234")登录控制系统
GetCurrentUserName()字符串user = mic.GetCurrentUserName()当前用户名称
GetUserIsIdle()布尔值mic.GetUserIsIdle()判断是否空闲
GetLastError()字符串mic.GetLastError()获取最后错误
GetLastRemotingConnectionError()字符串mic.GetLastRemotingConnectionError()获取远程错误
SetSuppressRemotingConnectionErrors()mic.SetSuppressRemotingConnectionErrors()屏蔽错误弹窗
GetVersion()字符串mic.GetVersion()获取接口版本
📘 一、命令类(Execute):用于执行动作性指令,如启动扫描、自动对焦、保存图像、重置状态等。
方法含义示例
Execute("CMD_SCANRATE1")设置扫描速率(速率编号1~4)mic.Execute("CMD_SCANRATE3")
Execute("CMD_AUTO_CONTRAST")自动对比度调整mic.Execute("CMD_AUTO_CONTRAST")
Execute("CMD_FOCUS_FINE")精细自动对焦mic.Execute("CMD_FOCUS_FINE")
Execute("CMD_FOCUS_COARSE")粗略对焦mic.Execute("CMD_FOCUS_COARSE")
Execute("CMD_STIG")启动像散校正mic.Execute("CMD_STIG")
Execute("CMD_SAVE_IMAGE")保存当前图像(内部路径)mic.Execute("CMD_SAVE_IMAGE")
Execute("CMD_ABORT")中止当前命令/动作mic.Execute("CMD_ABORT")
Execute("CMD_SE_MODE")设置二次电子工作模式mic.Execute("CMD_SE_MODE")
Execute("CMD_BE_MODE")设置背散射电子模式mic.Execute("CMD_BE_MODE")
📗 二、参数类(Set/Get):用于设置/读取成像参数,如倍率、聚焦、像散、扫描窗口、探测器选择等。

常见Set方法

参数名含义示例
AP_MAG设置倍率mic.Set("AP_MAG", 10000.0)
AP_FOCUS_FINE精细调焦mic.Set("AP_FOCUS_FINE", 1.5)
AP_STIG_X / Y像散校正X/Ymic.Set("AP_STIG_X", 0.05)
AP_RED_RASTER_POSN_X / Y设置扫描起点坐标mic.Set("AP_RED_RASTER_POSN_X", 256.0)
AP_RED_RASTER_WIDTH / HEIGHT扫描窗口宽/高mic.Set("AP_RED_RASTER_WIDTH", 512.0)
AP_BRIGHTNESS设置亮度mic.Set("AP_BRIGHTNESS", 0.7)
AP_CONTRAST设置对比度mic.Set("AP_CONTRAST", 0.6)
AP_DETECTOR选择探测器编号mic.Set("AP_DETECTOR", 1.0)
AP_SCANRATE设置扫描速率(1~4)mic.Set("AP_SCANRATE", 3)

常见Get方法

mag = mic.Get("AP_MAG", 0.0)[1]
focus = mic.Get("AP_FOCUS_FINE", 0.0)[1]
stigx = mic.Get("AP_STIG_X", 0.0)[1]
width = mic.Get("AP_RED_RASTER_WIDTH", 0.0)[1]
📙 三、图像采集类(Grab)
方法含义示例
Grab(x1, y1, x2, y2, flag, path)在指定矩形区域抓图保存mic.Grab(256, 192, 512, 384, 0, "img.png")
参数说明x1/y1为起点,x2/y2为终点坐标,flag一般为0

注意:抓图前请务必确认已设置成像区域。

📒 四、状态与控制类
方法说明示例
Abort()中止当前命令(等效于CMD_ABORT)mic.Abort()
GetStatus()获取当前设备状态(部分实现)status = mic.Get("AP_STATUS", 0.0)[1]
IsBusy()检查设备是否处于执行状态(非标准)is_busy = mic.Get("AP_IS_BUSY", 0.0)[1]
🧪 五、实战模板

以下三个示例是独立的,仅用于理解参数的使用。

# 1. 执行一次自动对焦+图像采集:
mic.Execute("CMD_FOCUS_FINE")
time.sleep(2.0)
img_path = r"C:\Temp\sem_1.png"
mic.Grab(256, 192, 512, 384, 0, img_path)# 2. 设置扫描窗口+多倍率采图:
mic.Set("AP_RED_RASTER_POSN_X", 256.0)
mic.Set("AP_RED_RASTER_POSN_Y", 192.0)
mic.Set("AP_RED_RASTER_WIDTH", 512.0)
mic.Set("AP_RED_RASTER_HEIGHT", 384.0)for mag in [500, 1000, 5000, 10000]:mic.Set("AP_MAG", mag)time.sleep(1.0)mic.Grab(256, 192, 512, 384, 0, f"C:/Temp/mag_{mag}.png")# 3. 获取图像参数并写入日志文件:
params = ["AP_MAG", "AP_FOCUS_FINE", "AP_STIG_X", "AP_STIG_Y"]
with open("log.txt", "w") as f:for p in params:val = mic.Get(p, 0.0)[1]f.write(f"{p}: {val}\n")
http://www.dtcms.com/wzjs/198188.html

相关文章:

  • 福州建网站 做网页南京seo网络优化公司
  • wordpress add_filter四川自助seo建站
  • 打开网站出现directory百度推广账户登录首页
  • wordpress tag中文seo门户 site
  • 鄂尔多斯网站制作公司搜索优化引擎
  • 网站怎么做统计百度入口提交
  • 多国语言网站建设网站运营seo实训总结
  • 杭州网站建站模板百度一下网页版搜索引擎
  • 武汉做网站seo手机网站排名优化
  • 如何让百度更新网站收录百度广告点击软件
  • 买cms做网站小型项目外包网站
  • 怎么用dw网站怎么建设百度信息流投放方式有哪些
  • 优客工场 网站开发台州关键词优化报价
  • 一款可做引流的网站源码百度app官方下载
  • 个人网站备案名称seo应该如何做
  • 网站建设如何把更改内容推广平台排行榜
  • 网站后台修改图片seo分析师
  • 山西成宁做的网站2021百度seo
  • 用什么网站做封面最好蜗牛精灵seo
  • ipad可以做网站吗seo代码优化
  • 两学一做 投稿网站店铺推广引流的方法
  • 集约化政府网站建设大数据查询官网
  • 怎么用织梦系统建一个网站网上的推广公司
  • 自己做抽奖网站违法搜索引擎营销的原理
  • 微网站免费建站系统新网站应该怎么做seo
  • 有没有什么推荐的网站厦门网站的关键词自动排名
  • 涪城移动网站建设html友情链接
  • 山西省网站制作神起网络游戏推广平台
  • 网站建设与推广的步骤惠州网络营销
  • 做网站遇到竞争对手怎么办郑州品牌网站建设