问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

cadence orcad cis 数据库放元件时出错

发布网友 发布时间:2022-04-10 05:04

我来回答

3个回答

懂视网 时间:2022-04-10 09:25

nsqlookupd

import (
    "fmt"
    "sync"
    "sync/atomic"
    "time"
)
//db(注册中心--内存数据库map)结构体
type RegistrationDB struct {
    sync.RWMutex //读写锁
    registrationMap map[Registration]Producers //
}
//代表一个生产者 主题 通道 
type Registration struct {
    Category string //主题
    Key string //通道
    SubKey string //
}
type Registrations []Registration
//代表客户端nsqd 的配置信息
type PeerInfo struct {
    lastUpdate int64
    id  string
    RemoteAddress string `json:"remote_address"`
    Hostname  string `json:"hostname"`
    BroadcastAddress string `json:"broadcast_address"`
    TCPPort  int `json:"tcp_port"`
    HTTPPort  int `json:"http_port"`
    Version  string `json:"version"`
}
//生产者
type Producer struct {
    peerInfo *PeerInfo
    tombstoned bool
    tombstonedAt time.Time
}

type Producers []*Producer

func (p *Producer) String() string {
    return fmt.Sprintf("%s [%d, %d]", p.peerInfo.BroadcastAddress, p.peerInfo.TCPPort, p.peerInfo.HTTPPort)
}

func (p *Producer) Tombstone() {
    p.tombstoned = true
    p.tombstonedAt = time.Now()
}

func (p *Producer) IsTombstoned(lifetime time.Duration) bool {
    return p.tombstoned && time.Now().Sub(p.tombstonedAt) < lifetime
}

func NewRegistrationDB() *RegistrationDB {
    return &RegistrationDB{
        registrationMap: make(map[Registration]Producers),
    }
}

// add a registration key
func (r *RegistrationDB) AddRegistration(k Registration) {
    r.Lock()
    defer r.Unlock()
    _, ok := r.registrationMap[k]
    if !ok {
        r.registrationMap[k] = Producers{}
    }
}

// add a producer to a registration
func (r *RegistrationDB) AddProducer(k Registration, p *Producer) bool {
    r.Lock()
    defer r.Unlock()
    producers := r.registrationMap[k]
    found := false
    for _, producer := range producers {
        if producer.peerInfo.id == p.peerInfo.id {
            found = true
        }
    }
    if found == false {
        r.registrationMap[k] = append(producers, p)
    }
    return !found
}

// remove a producer from a registration
func (r *RegistrationDB) RemoveProducer(k Registration, id string) (bool, int) {
    r.Lock()
    defer r.Unlock()
    producers, ok := r.registrationMap[k]
    if !ok {
        return false, 0
    }
    removed := false
    cleaned := Producers{}
    for _, producer := range producers {
        if producer.peerInfo.id != id {
            cleaned = append(cleaned, producer)
        } else {
            removed = true
        }
    }
    // Note: this leaves keys in the DB even if they have empty lists
    r.registrationMap[k] = cleaned
    return removed, len(cleaned)
}

// remove a Registration and all it‘s producers
func (r *RegistrationDB) RemoveRegistration(k Registration) {
    r.Lock()
    defer r.Unlock()
    delete(r.registrationMap, k)
}

func (r *RegistrationDB) needFilter(key string, subkey string) bool {
    return key == "*" || subkey == "*"
}

func (r *RegistrationDB) FindRegistrations(category string, key string, subkey string) Registrations {
    r.RLock()
    defer r.RUnlock()
    if !r.needFilter(key, subkey) {
        k := Registration{category, key, subkey}
        if _, ok := r.registrationMap[k]; ok {
            return Registrations{k}
        }
        return Registrations{}
    }
    results := Registrations{}
    for k := range r.registrationMap {
        if !k.IsMatch(category, key, subkey) {
            continue
        }
        results = append(results, k)
    }
    return results
}

func (r *RegistrationDB) FindProducers(category string, key string, subkey string) Producers {
    r.RLock()
    defer r.RUnlock()
    if !r.needFilter(key, subkey) {
        k := Registration{category, key, subkey}
        return r.registrationMap[k]
    }

    results := Producers{}
    for k, producers := range r.registrationMap {
        if !k.IsMatch(category, key, subkey) {
            continue
        }
        for _, producer := range producers {
            found := false
            for _, p := range results {
                if producer.peerInfo.id == p.peerInfo.id {
                    found = true
                }
            }
            if found == false {
                results = append(results, producer)
            }
        }
    }
    return results
}

func (r *RegistrationDB) LookupRegistrations(id string) Registrations {
    r.RLock()
    defer r.RUnlock()
    results := Registrations{}
    for k, producers := range r.registrationMap {
        for _, p := range producers {
            if p.peerInfo.id == id {
                results = append(results, k)
                break
            }
        }
    }
    return results
}

func (k Registration) IsMatch(category string, key string, subkey string) bool {
    if category != k.Category {
        return false
    }
    if key != "*" && k.Key != key {
        return false
    }
    if subkey != "*" && k.SubKey != subkey {
        return false
    }
    return true
}

func (rr Registrations) Filter(category string, key string, subkey string) Registrations {
    output := Registrations{}
    for _, k := range rr {
        if k.IsMatch(category, key, subkey) {
            output = append(output, k)
        }
    }
    return output
}

func (rr Registrations) Keys() []string {
    keys := make([]string, len(rr))
    for i, k := range rr {
        keys[i] = k.Key
    }
    return keys
}

func (rr Registrations) SubKeys() []string {
    subkeys := make([]string, len(rr))
    for i, k := range rr {
        subkeys[i] = k.SubKey
    }
    return subkeys
}

func (pp Producers) FilterByActive(inactivityTimeout time.Duration, tombstoneLifetime time.Duration) Producers {
    now := time.Now()
    results := Producers{}
    for _, p := range pp {
        cur := time.Unix(0, atomic.LoadInt64(&p.peerInfo.lastUpdate))
        if now.Sub(cur) > inactivityTimeout || p.IsTombstoned(tombstoneLifetime) {
            continue
        }
        results = append(results, p)
    }
    return results
}

func (pp Producers) PeerInfo() []*PeerInfo {
    results := []*PeerInfo{}
    for _, p := range pp {
        results = append(results, p.peerInfo)
 var cpro_id = "u6292429";
 



                                        

热心网友 时间:2022-04-10 06:33

我也碰到了这个问题,解决了。解决办法,自己的OLB库文件必须放置到X:\Cadence\SPB_16.3\tools\capture\library目录下。

另外一次的解决方法是:删除capture.ini,重启动 orcad cis,让它重建capture.ini。然后重新设置cis配置文件。

热心网友 时间:2022-04-10 07:51

OrCAD CIS使用ICA可以在线查找众多厂商的元器件和相关的原理图,这样可以大大较少我们画原理图封装库的时间,例如NXP的LPC2131这些多引脚的封装,画起来是相当的耗时间。有了ICA的服务就相对简单多了,只要在线输入LPC2131就可查找出来它的器件的信息,包括原理图的封装和Datasheet的链接。
ICA功能的使用方法:

首先进入原理图的编辑界面,然后右击鼠标,出现“place database part”,然后会打开一个“CIS
Explorer”窗口,在状态栏下面会有“Local part database”的选项卡,旁边会有“Internet
Components Assistance”的选项卡,选择这个选项卡,就可以切换到ICA的功能了。
如果没有显示这个选项卡,请按照我文章中的方法注册相关的dll文件即可。

但当我在OrCAD中使用ICA的时候,弹出如下提示:“ICA Warning Dialog.Class in orpiica.dll Not Registered Internet Component”.

经过搜索,找到了官方的解答,英文原文如下:

其实关键的问题就是把以下这几个dll文件注册就行了:
· "C:\Program Files\Common Files\Orcad\CIS\orpiica.dll"
· "C:\Program Files\Common Files\Orcad\CIS\genlibcom.dll"
· "C:\Program Files\Common Files\Orcad\CIS\apconctl.dll"
· "C:\Program Files\Common Files\Microsoft shared\DAO\350.dll"
只要找到这几个文件,然后右击---“Register dll”就行了。

官方原文:
Error while launching CIS Explorer

PROBLEM:
The following error message appears while launching CIS Explorer in Capture CIS: “ICA Warning Dialog.Class in orpiica.dll Not Registered Internet Component”. Why?

SOLUTION:
This error message appears, if you install the OrCAD 10.3 software on a freshly formatted Windows XP/2000 machine, which does not have a previous installation of any of the OrCAD
procts. Also, this is e to improper registration of the following DLLs:
· "C:\Program Files\Common Files\Orcad\CIS\orpiica.dll"
· "C:\Program Files\Common Files\Orcad\CIS\genlibcom.dll"
· "C:\Program Files\Common Files\Orcad\CIS\apconctl.dll"
· "C:\Program Files\Common Files\Microsoft shared\DAO\350.dll"
The solution is to register these DLLs. To register these DLLs, the steps are:
1. Close Capture CIS.
2. Choose Start > Run to open the Run window.
3. Type cmd to open the command line window.
4. Go to <Install_dir>\tools\capture, where <Install_dir> is the path for the Capture CIS installation directory.//其实这里根本就找不到以上的dll文件,这是官方的失误,开始的时候我都被误导了,呵呵
5. Type the following commands, one at a time in the command line window:
regsvr32 orpiica.dll
regsvr32 genlibcom.dll
regsvr32 apconctl.dll
regsvr32 DAO\350.dll
After you register these DLLs, the missing ICA tab appears on the CIS Explorer window and then you can open the Active Parts website.
If you are unable to place parts from Active Parts, provide Write permissions to the installation directory.
Document number: CIS2AB
Applies to: CIS
Created on: 7/28/2005
Last modified: 07/28/2005
Copyright ? 2005, Cadence Design Systems, Inc.
All rights reserved.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 农村宅基地征收有何补偿 房子拆迁,我的宅基地0.5亩应该补偿多少钱 宅基地征用补偿多少钱一亩 1955年去世黄姓画家,与齐白石齐名 农村宅基地征用补偿标准,每亩多少钱 与齐白石齐名的老画家是() 民国时有哪些著名画家? 清朝末年的中国画家有哪些? 与齐白石并称为南黄北白的书画大家是( ) 张千和齐白石是同一时期的画家吗 齐白石、徐悲鸿、吴冠中齐名的画家都有谁?还有各自的特点简略点的就好了! 电脑怎样显示时间 怎么改变手机显示时间? 冬虫夏草吃了有用吗~吃过的来说下~谢谢 冬虫夏草功效好吗?冬虫夏草可以相信吗? 笔记本电脑直流电源插孔大小怎么知道我要配置一个适配器不想带电脑去 听说冬虫夏草很神奇,真有那么好吗? 阿依舍虫草为什么是生态繁育 笔记本电脑怎么看充电口大小 是买阿依舍还是藏域明珠的虫草? 给同学的一封信,要求格式对,不少于400字 致同学的一封信(必须运用倒叙手法)(400字) 手机视频通过qq上传到电脑,已往都可以突然上传不了了为什么不可以了? excel表格怎样打印预览 excel技能提升,打印预览以及表格分页的具体操作步骤的学习 以感恩父母为题,在有书信的形式写一篇文章(字数1000) 远期与期货定价分析的基本假设? 遵义哪里有办高压电工证,和焊工证 鑫尔特变频空压机30A的多少钱 遵义市哪里办理焊工证,多少钱 依据远期,期货,互换,期权等定价方法来描述金融衍生品的定价规律 永磁变频37kw的空压机大概多少钱啊? 为什么期货和远期价格不同 cfa 我有一台博世BCD一25冰箱不制冷,修冰箱的师傅说压缩机坏了,要一千多。到底这个压缩机多少钱。 遵义那里办焊工证,多少时间拿到 德曼螺杆永磁变频空压机7.5千瓦多少钱一台 奥克斯1.5匹变频空调压缩机多少钱一台 美的售后更换一台2匹空调压缩机更换需要多少钱? 以这才发现为题800字作文 永磁变频空压机37kw多少钱一台?