python opc plc_PYthon簡易OPC數據采集寫入Access

利用hollias comm opcserver 與Python實現交互。代碼如下:

# -*- coding: utf-8 -*-

from sys import *

from getopt import *

#from os import * 造成f = open('test.txt', 'r') TypeError: an integer is required錯誤

import signal

import sys

import os

import types

import datetime

import re, time, csv

import Openopc

import Pyro

import pypyodbc

import random

print os.name

opc_class='Matrikon.OPC.Automation;Graybox.OPC.DAWrapper;HSCOPC.Automation;RSI.OPCAutomation;OPC.Automation'

client_name='OpenOPC'

opc_server='Hollysys.HOLLiASComm.1'

opc_host='127.0.0.1'

taglist=[]

f=open('test.txt','r')

f.seek(0)

for line in f:

print line,

line=line.rstrip('

')#去掉換行符

taglist.append(line)

f.close()

print taglist

class SigHandler:

def __init__(self):

self.signaled = 0

self.sn = None

def __call__(self, sn, sf):

self.sn = sn

self.signaled += 1

# Establish signal handler for keyboard interrupts

def signalhandle():

sh = SigHandler()

signal.signal(signal.SIGINT,sh)

if os.name == 'nt':

signal.signal(signal.SIGBREAK,sh)

signal.signal(signal.SIGTERM,sh)

return sh

def test01():

opc = OpenOPC.client(opc_class, client_name)

print #"### create opc!"

opc.connect(opc_server, opc_host)

print "### connect opc server:", opc_server

pathfile = 'phone.mdb'

tablename = 'user'

conn = mdb_conn(pathfile)

cur = conn.cursor()

print cur

test=random.randint(0, 10)

tag_vale=[('Channel1.Device1.q',test)]#寫隨機數給標簽q

taglist_opc = opc.read(taglist, update=1000,sync=True)

wropc=opc.write(tag_vale)

print wropc

for i in range(len(taglist_opc)):

(name, val, qual, time) = taglist_opc[i]

if qual=='Good':

print 'name:', name

print 'val:', type(val)

print 'qual:', qual

print 'time:', type(time)

#ll=[name,val,]

#sql = "Insert Into " + tablename + " (a,b,c,d) Values ('"+name+"','"+str(val)+"','"+qual+"','"+time+"')"#為強制類型轉換

#sql = "Insert Into " + tablename + " (name,val,qual,time) Values ('"+name+"','123','"+qual+"','"+time+"')"

#sql = "Insert Into " + tablename + " (a,b,c,d) Values ('%s',%.1f,'%s','%s')"%taglist_opc[i] #%s占位

sql = "Insert Into " + tablename + " (a,b,c,d,e) Values ('%s',%.1f,'%s','%s'"%taglist_opc[i]+",'%s')"%tt #%s占位

print sql

if mdb_add(conn, cur, sql):

print("修改成功!")

else:

print("修改失敗!")

else:

print'數據采集失敗'

cur.close() #關閉游標

conn.close()

def mdb_conn(db_name, password = ""):

"""

功能:創建數據庫連接

:param db_name: 數據庫名稱

:param db_name: 數據庫密碼,默認為空

:return: 返回數據庫連接

"""

str = 'Driver=;PWD' + password + ";DBQ=" + db_name

conn = pypyodbc.win_connect_mdb(str)

return conn

def mdb_add(conn, cur, sql):

"""

功能:向數據庫插入數據

:param conn: 數據庫連接

:param cur: 游標

:param sql: sql語句

:return: sql語句是否執行成功

"""

try:

cur.execute(sql)

conn.commit()

return True

except:

return False

if __name__ == '__main__':

while True:

test01()

time.sleep(10)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/457508.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/457508.shtml
英文地址,請注明出處:http://en.pswp.cn/news/457508.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

邊工作邊刷題:70天一遍leetcode: day 73

Read N Characters Given Read4 I/II 要點:這題的要點就是搞清楚幾個變量的內在邏輯:只有buffer是整4 bytes的。而client要讀的bytes(需求)和實際上disk上有的bytes(供給)都是不整的。所以, 循環…

javascript時間戳和日期字符串相互轉換

1 <html xmlns"http://www.w3.org/1999/xhtml">2 <head>3 <meta http-equiv"Content-Type" content"text/html; charsetutf-8" />4 <script type"text/javascript">5 // 獲取當前時間戳(以s為單位)6 var time…

wireshark 十六進制過濾_CTF流量分析之wireshark使用

01.基本介紹在CTF比賽中&#xff0c;對于流量包的分析取證是一種十分重要的題型。通常這類題目都是會提供一個包含流量數據的pcap文件&#xff0c;參賽選手通過該文件篩選和過濾其中無關的流量信息&#xff0c;根據關鍵流量信息找出flag或者相關線索。pcap流量包的分析通常都是…

vim 插件管理

1  進入自己的vim mkdir ./bundle/vundle 2  在vimrc同級中執行 git clone https://github.com/gmarik/vundle.git ./bundle/vundle 將一些插件文件 下載到./bundle/vundle中 3  編寫自己的vim配置&#xff0c;其實很簡單 set nocompatible " be iMp…

ubuntu install wiznote

sudo add-apt-repository ppa:wiznote-team #添加官方源sudo apt-get update #更新源sudo apt-get install wiznote #安裝為知筆記

python 對象序列化 pickling_python操作文件——序列化pickling和JSON

當我們在內存中定義一個dict的時候&#xff0c;我們是可以隨時修改變量的內容的&#xff1a;>>> ddict(namewc,age28)>>>d{name: wc, age: 28}我們可以隨時修改name和age的值。但是當我們重新運行程序的時候&#xff0c;name、age的初始化值還是wc和28&#…

python實現Redis訂閱發布

Redis 發布訂閱 Redis 發布訂閱可以用在像消息通知&#xff0c;群聊&#xff0c;定向推送&#xff0c;參數刷新加載等業務場景 發布訂閱模型有三個角色&#xff1a; 發布者&#xff08;Publisher&#xff09;訂閱者(Subscriber)頻道(channel) 每個訂閱者可以訂閱多個頻道&am…

nfs的快速部署

1、nfs內核自帶協議模塊不用安裝&#xff0c;如果沒有yum安裝yum -y install nfs-utils2、配置vim /etc/exports #配置文件 此文件一般為空&#xff0c;編寫格式為&#xff1a; /share/word 192.168.31.254(rw) 192.168.31.252(ro) # 共享/share/word目錄給192.168.…

redistemplate怎么修改數據_如何使用RedisTemplate訪問Redis數據結構?

在springboot項目中&#xff0c;集成各種框架變得非常容易。下面簡單介紹一下如何在springboot項目中集成單機模式redis。集群模式也差不多&#xff0c;這里就不過多介紹了。首先你得安裝redis服務&#xff0c;無論在linux還是windows系統上。如果沒有安裝&#xff0c;請自行百…

HyperLogLog原理與在Redis中的使用

Redis-HyperLogLog 基于HyperLogLog算法&#xff0c;使用極小的空間完成巨量運算 Redis 中HyperLogLog 基本使用 常用命令 PFADD key element [element …]: 將任意數量的元素添加到指定的 HyperLogLog 里面。PFCOUNT key [key …]: 計算hyperloglog的獨立總數prmerge destk…

iOS開發UI篇—xib的簡單使用

一、簡單介紹 xib和storyboard的比較&#xff0c;一個輕量級一個重量級。 共同點&#xff1a; 都用來描述軟件界面 都用Interface Builder工具來編輯 不同點: Xib是輕量級的&#xff0c;用來描述局部的UI界面 Storyboard是重量級的&#xff0c;用來描述整個軟件的多個界面&…

【云棲計算之旅】線下沙龍第2期精彩預告:Docker在云平臺上的最佳實踐

Docker是一個開源的應用容器引擎&#xff0c;提供了一種在安全、可重復的環境中自動部署軟件的方式&#xff0c;允許開發者將他們的應用和依賴包打包到一個可移植的容器中&#xff0c;然后發布到任何流行的Linux機器上&#xff0c;也可以實現虛擬化。容器完全使用沙箱機制&…

小程序mpvue圖片繪制水印_開發筆記:使用 mpvue 開發斗圖小程序

之前用過 wepy 框架寫了個小程序 GitHub - yshkk/shanbay-mina: 基于 wepy 框架的 “扇貝閱讀” 微信小程序 &#xff0c;感覺寫法上類似 vue&#xff0c;但不那么徹底。現在美團點評發布的 mpvue 支持開發者可以用 vue 的語法開發微信小程序&#xff0c;正好有強需求需要一個斗…

mysql int類型的長度值

整數類型的存儲和范圍(來自mysql手冊) 類型字節最小值最大值(帶符號的/無符號的)(帶符號的/無符號的)TINYINT1-1281270255SMALLINT2-3276832767065535MEDIUMINT3-83886088388607016777215INT4-2147483648214748364704294967295BIGINT8-92233720368547758089223372036854775807…

龍王我當定了(一個在QQ刷龍王的腳本)

自從學了python&#xff0c;龍王再也沒丟過&#xff0c;就是經常被打, QQ 和 TIM 都可以&#xff0c;發送時要把聊天窗口打開。 # 如果import報錯&#xff0c;那可以pip下載這幾個模塊試一試 import win32gui import win32con import win32clipboard as w import random from…

時序數據合并場景加速分析和實現 - 復合索引,窗口分組查詢加速,變態遞歸加速...

時序數據合并場景加速分析和實現 - 復合索引&#xff0c;窗口分組查詢加速&#xff0c;變態遞歸加速 作者 digoal 日期 2016-11-28 標簽 PostgreSQL , 數據合并 , 時序數據 , 復合索引 , 窗口查詢 背景 在很多場景中&#xff0c;都會有數據合并的需求。 例如記錄了表的變更明細…

navicat for mysql 數據庫備份與還原

一, 首先設置, 備份保存路徑 工具 -> 選項 點開 其他 -> 日志文件保存路徑 二. 開始備份 備份分兩種, 一種是以sql保存, 一種是保存為備份 SQL保存 右鍵點擊你要備份的數據庫, -> 轉儲SQL文件 選擇位置和文件名 開始轉儲 導入 建議 刪除所有表 或 重新建數據庫 同導出…

DES的原理及python實現

DES加密算法原理及實現 DES是一種對稱加密算法【即發送者與接收者持有相同的密鑰】&#xff0c;它的基本原理是將要加密的數據劃分為n個64位的塊&#xff0c;然后使用一個56位的密鑰逐個加密每一個64位的塊&#xff0c;得到n個64位的密文塊&#xff0c;最后將密文塊拼接起來得…

python按身高體重排隊_LeetCode-python 406.根據身高重建隊列

題目鏈接難度&#xff1a;中等 類型&#xff1a; 數組假設有打亂順序的一群人站成一個隊列。 每個人由一個整數對(h, k)表示&#xff0c;其中h是這個人的身高&#xff0c;k是排在這個人前面且身高大于或等于h的人數。 編寫一個算法來重建這個隊列。注意&#xff1a;總人數…

遠程連接mysql數據庫,1130問題

遠程或使用非127.0.0.1和localhost地址連接時&#xff0c;出現代號為1130問題&#xff0c; ERROR 1130: Host 192.168.2.159 is not allowed to connect to this MySQL server 猜想這是沒有授權&#xff0c;將mysql數據庫中user表中host列的localhost改為%&#xff0c;重新啟動…