0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

標(biāo)簽 > Processor

Processor

+關(guān)注 0人關(guān)注

Processor的中文意思是:處理器,Intel Processor即Intel 系列處理器。是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心(Core)和控制核心( Control Unit)。

文章: 1 個(gè)
視頻: 15 個(gè)
瀏覽: 30753
帖子: 9 個(gè)

Processor簡(jiǎn)介

  Processor的中文意思是:處理器,Intel Processor即Intel 系列處理器。

  中央處理器(CPU,Central Processing Unit)是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心(Core)和控制核心( Control Unit)。

  主要分為兩大類型:

  Intel系列處理器和AMD系列處理器。

Processor百科

  Processor的中文意思是:處理器,Intel Processor即Intel 系列處理器。

  中央處理器(CPU,Central Processing Unit)是一塊超大規(guī)模的集成電路,是一臺(tái)計(jì)算機(jī)的運(yùn)算核心(Core)和控制核心( Control Unit)。

  主要分為兩大類型:

  Intel系列處理器和AMD系列處理器。

  

  

  一小時(shí)搞明白注解處理器(Annotation Processor Tool)

  Java中的注解是個(gè)很神奇的東西,還不了解的可以看下一小時(shí)搞明白自定義注解(Annotation)?,F(xiàn)在很多Android的庫(kù)都用使用注解實(shí)現(xiàn)的,比如ButterKnife,我們不防也來(lái)學(xué)習(xí)一下,學(xué)完注解處理器,我們嘗試寫一個(gè)簡(jiǎn)單的類似ButterKnife的東西來(lái)綁定控件。

  什么是注解處理器?

  注解處理器是(Annotation Processor)是javac的一個(gè)工具,用來(lái)在編譯時(shí)掃描和編譯和處理注解(Annotation)。你可以自己定義注解和注解處理器去搞一些事情。一個(gè)注解處理器它以Java代碼或者(編譯過的字節(jié)碼)作為輸入,生成文件(通常是java文件)。這些生成的java文件不能修改,并且會(huì)同其手動(dòng)編寫的java代碼一樣會(huì)被javac編譯??吹竭@里加上之前理解,應(yīng)該明白大概的過程了,就是把標(biāo)記了注解的類,變量等作為輸入內(nèi)容,經(jīng)過注解處理器處理,生成想要生成的java代碼。

  處理器AbstractProcessor

  處理器的寫法有固定的套路,繼承AbstractProcessor。如下:

  public class MyProcessor extends AbstractProcessor {

  @Override

  public synchronized void init(ProcessingEnvironment processingEnv) {

  super.init(processingEnv);

  }

  @Override

  public Set《String》 getSupportedAnnotationTypes() {

  return null;

  }

  @Override

  public SourceVersion getSupportedSourceVersion() {

  return SourceVersion.latestSupported();

  }

  @Override

  public boolean process(Set《? extends TypeElement》 annotations, RoundEnvironment roundEnv) {

  return true;

  }

  }

  init(ProcessingEnvironment processingEnv) 被注解處理工具調(diào)用,參數(shù)ProcessingEnvironment 提供了Element,F(xiàn)iler,Messager等工具

  getSupportedAnnotationTypes() 指定注解處理器是注冊(cè)給那一個(gè)注解的,它是一個(gè)字符串的集合,意味著可以支持多個(gè)類型的注解,并且字符串是合法全名。

  getSupportedSourceVersion 指定Java版本

  process(Set《? extends TypeElement》 annotations, RoundEnvironment roundEnv) 這個(gè)也是最主要的,在這里掃描和處理你的注解并生成Java代碼,信息都在參數(shù)RoundEnvironment 里了,后面會(huì)介紹。

  在Java7 中還可以使用

  @SupportedSourceVersion(SourceVersion.latestSupported())

  @SupportedAnnotationTypes({

  // 合法注解全名的集合

  })

  代替 getSupportedSourceVersion() 和 getSupportedAnnotationType() ,沒毛病,還可以在注解處理離器中使用注解。

  注冊(cè)注解處理器

  打包注解處理器的時(shí)候需要一個(gè)特殊的文件 javax.annotation.processing.Processor 在 META-INF/services 路徑下

  --myprcessor.jar

 ?。璫om

  ------example

 ?。璏yProcessor.class

 ?。璏ETA-INF

  ------services

 ?。璲avax.annotation.processing.Processor

  打包進(jìn)javax.annotation.processing.Processor的內(nèi)容是處理器的合法全稱,多個(gè)處理器之間換行。

  com.example.myprocess.MyProcessorA

  com.example.myprocess.MyProcessorB

  google提供了一個(gè)注冊(cè)處理器的庫(kù)

  compile ‘com.google.auto.service:auto-service:1.0-rc2’

  一個(gè)注解搞定:

  @AutoService(Processor.class)

  public class MyProcessor extends AbstractProcessor {

  。。.

  }

  讀到這里ButterKnife用到的知識(shí)點(diǎn)我們都已經(jīng)了解了

  1.自定義注解

  2.用注解處理器解析注解

  3.解析完成后生成Java文件

  BufferKnife使用:

  public class MainActivity extends AppCompatActivity {

  @Bind(R.id.rxjava_demo)

  Button mRxJavaDemo;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.activity_main);

  ButterKnife.bind(this);

  mRxJavaDemo.setText(“Text”);

  }

  }

  然后我們編譯一下,打開路徑:/app/build/intermediates/classes/release/com/ming/rxdemo/MainActivity$$ViewBinder.class

  這就是我們生成的Java文件,可以看到Button已經(jīng)在bind里面初始化了。

  public class MainActivity$$ViewBinder《T extends MainActivity》 implements ViewBinder《T》 {

  public MainActivity$$ViewBinder() {

  }

  public void bind(Finder finder, T target, Object source) {

  View view = (View)finder.findRequiredView(source, 2131492944, “field \‘mRxJavaDemo\’”);

  target.mRxJavaDemo = (Button)finder.castView(view, 2131492944, “field \‘mRxJavaDemo\’”);

  }

  public void unbind(T target) {

  target.mRxJavaDemo = null;

  }

  }

  接下來(lái)我們創(chuàng)建一個(gè)項(xiàng)目,寫一個(gè)簡(jiǎn)單的用注解綁定控件的例子

  項(xiàng)目結(jié)構(gòu)

 ?。璦pt-demo

  ----bindview-annotation(Java Library)

 ?。璪indview-api(Android Library)

  ----bindview-compiler(Java Library)

 ?。璦pp(Android App)

  bindview-annotation 注解聲明

  bindview-api 調(diào)用Android SDK API

  bindview-compiler 注解處理器相關(guān)

  app 測(cè)試App

  1.在 bindview-annotation 下創(chuàng)建一個(gè)@BindView注解,該注解返回一個(gè)值,整型,名字為value,用來(lái)表示控件ID。

  @Target(ElementType.FIELD)

  @Retention(RetentionPolicy.CLASS)

  public @interface BindView {

  /**

  * 用來(lái)裝id

  *

  * @return

  */

  int value();

  }

  2.在 bindview-compiler 中創(chuàng)建注解處理器 BindViewProcessor 并注冊(cè),做基本的初始化工作。

  @AutoService(Processor.class)

  public class BindViewProcessor extends AbstractProcessor {

  /**

  * 文件相關(guān)的輔助類

  */

  private Filer mFiler;

  /**

  * 元素相關(guān)的輔助類

  */

  private Elements mElementUtils;

  /**

  * 日志相關(guān)的輔助類

  */

  private Messager mMessager;

  /**

  * 解析的目標(biāo)注解集合

  */

  private Map《String, AnnotatedClass》 mAnnotatedClassMap = new HashMap《》();

  @Override

  public synchronized void init(ProcessingEnvironment processingEnv) {

  super.init(processingEnv);

  mElementUtils = processingEnv.getElementUtils();

  mMessager = processingEnv.getMessager();

  mFiler = processingEnv.getFiler();

  }

  @Override

  public Set《String》 getSupportedAnnotationTypes() {

  Set《String》 types = new LinkedHashSet《》();

  types.add(BindView.class.getCanonicalName());//返回該注解處理器支持的注解集合

  return types;

  }

  @Override

  public SourceVersion getSupportedSourceVersion() {

  return SourceVersion.latestSupported();

  }

  @Override

  public boolean process(Set《? extends TypeElement》 annotations, RoundEnvironment roundEnv) {

  return true;

  }

  }

  是不是注意到了里面有個(gè)Map容器,而且類型是AnnotatedClass,這是干啥的呢?這個(gè)很好理解,我們?cè)诮馕鯴ML,解析Json的時(shí)候數(shù)據(jù)解析完之后是不是要以對(duì)象的形式表示出來(lái),這里也一樣,@BindView用來(lái)標(biāo)記類成員,一個(gè)類下可以有多個(gè)成員,好比一個(gè)Activity中可以有多個(gè)控件,一個(gè)容器下有多個(gè)控件等。如下:

  package com.mingwei.myprocess.model;

  import com.mingwei.myprocess.TypeUtil;

  import com.squareup.javapoet.ClassName;

  import com.squareup.javapoet.JavaFile;

  import com.squareup.javapoet.MethodSpec;

  import com.squareup.javapoet.ParameterizedTypeName;

  import com.squareup.javapoet.TypeName;

  import com.squareup.javapoet.TypeSpec;

  import java.util.ArrayList;

  import java.util.List;

  import javax.lang.model.element.Modifier;

  import javax.lang.model.element.TypeElement;

  import javax.lang.model.util.Elements;

  /**

  * Created by mingwei on 12/10/16.

  * CSDN: http://blog.csdn.net/u013045971

  * Github: https://github.com/gumingwei

  */

  public class AnnotatedClass {

  /**

  * 類名

  */

  public TypeElement mClassElement;

  /**

  * 成員變量集合

  */

  public List《BindViewField》 mFiled;

  /**

  * 元素輔助類

  */

  public Elements mElementUtils;

  public AnnotatedClass(TypeElement classElement, Elements elementUtils) {

  this.mClassElement = classElement;

  this.mElementUtils = elementUtils;

  this.mFiled = new ArrayList《》();

  }

  /**

  * 獲取當(dāng)前這個(gè)類的全名

  */

  public String getFullClassName() {

  return mClassElement.getQualifiedName().toString();

  }

  /**

  * 添加一個(gè)成員

  */

  public void addField(BindViewField field) {

  mFiled.add(field);

  }

  /**

  * 輸出Java

  */

  public JavaFile generateFinder() {

  return null;

  }

  /**

  * 包名

  */

  public String getPackageName(TypeElement type) {

  return mElementUtils.getPackageOf(type).getQualifiedName().toString();

  }

  /**

  * 類名

  */

  private static String getClassName(TypeElement type, String packageName) {

  int packageLen = packageName.length() + 1;

  return type.getQualifiedName().toString().substring(packageLen).replace(‘。’, ‘$’);

  }

  }

  成員用BindViewField表示,沒什么復(fù)雜的邏輯,在構(gòu)造函數(shù)判斷類型和初始化,簡(jiǎn)單的get函數(shù)

  package com.mingwei.myprocess.model;

  import com.mingwe.myanno.BindView;

  import javax.lang.model.element.Element;

  import javax.lang.model.element.ElementKind;

  import javax.lang.model.element.Name;

  import javax.lang.model.element.VariableElement;

  import javax.lang.model.type.TypeMirror;

  /**

  * Created by mingwei on 12/10/16.

  * CSDN: http://blog.csdn.net/u013045971

  * Github: https://github.com/gumingwei

  * 被BindView注解標(biāo)記的字段的模型類

  */

  public class BindViewField {

  private VariableElement mFieldElement;

  private int mResId;

  public BindViewField(Element element) throws IllegalArgumentException {

  if (element.getKind() != ElementKind.FIELD) {//判斷是否是類成員

  throw new IllegalArgumentException(String.format(“Only field can be annotated with @%s”,

  BindView.class.getSimpleName()));

  }

  mFieldElement = (VariableElement) element;

  //獲取注解和值

  BindView bindView = mFieldElement.getAnnotation(BindView.class);

  mResId = bindView.value();

  if (mResId 《 0) {

  throw new IllegalArgumentException(String.format(“value() in %s for field % is not valid”,

  BindView.class.getSimpleName(), mFieldElement.getSimpleName()));

  }

  }

  public Name getFieldName() {

  return mFieldElement.getSimpleName();

  }

  public int getResId() {

  return mResId;

  }

  public TypeMirror getFieldType() {

  return mFieldElement.asType();

  }

  }

  這里看到了很多的Element,在Xml解析時(shí)候就有Element這個(gè)概念。在Java源文件中同樣有Element概念:

  package com.example; // PackageElement

  public class MyClass { // TypeElement

  private int a; // VariableElement

  private Foo other; // VariableElement

  public Foo () {} // ExecuteableElement

  public void setA ( // ExecuteableElement

  int newA // TypeElement

  ) {

  }

  }

  接下來(lái)就是在處理器的process中解析注解了

  每次解析前都要清空,因?yàn)閜rocess方法可能不止走一次。

  拿到注解模型之后遍歷調(diào)用生成Java代碼

  @Override

  public boolean process(Set《? extends TypeElement》 annotations, RoundEnvironment roundEnv) {

  mAnnotatedClassMap.clear();

  try {

  processBindView(roundEnv);

  } catch (IllegalArgumentException e) {

  error(e.getMessage());

  return true;

  }

  try {

  for (AnnotatedClass annotatedClass : mAnnotatedClassMap.values()) {

  info(“generating file for %s”, annotatedClass.getFullClassName());

  annotatedClass.generateFinder().writeTo(mFiler);

  }

  } catch (Exception e) {

  e.printStackTrace();

  error(“Generate file failed,reason:%s”, e.getMessage());

  }

  return true;

  }

  processBindView 和 getAnnotatedClass

  /**

  * 遍歷目標(biāo)RoundEnviroment

  * @param roundEnv

  */

  private void processBindView(RoundEnvironment roundEnv) {

  for (Element element : roundEnv.getElementsAnnotatedWith(BindView.class)) {

  AnnotatedClass annotatedClass = getAnnotatedClass(element);

  BindViewField field = new BindViewField(element);

  annotatedClass.addField(field);

  }

  }

  /**

  * 如果在map中存在就直接用,不存在就new出來(lái)放在map里

  * @param element

  */

  private AnnotatedClass getAnnotatedClass(Element element) {

  TypeElement encloseElement = (TypeElement) element.getEnclosingElement();

  String fullClassName = encloseElement.getQualifiedName().toString();

  AnnotatedClass annotatedClass = mAnnotatedClassMap.get(fullClassName);

  if (annotatedClass == null) {

  annotatedClass = new AnnotatedClass(encloseElement, mElementUtils);

  mAnnotatedClassMap.put(fullClassName, annotatedClass);

  }

  return annotatedClass;

  }

  3.在生成Java之前 我們要在bindview-api 中創(chuàng)建一些類,配合 bindview-compiler 一起使用。

  你在使用Butterknife的時(shí)候不是要在onCreate里掉用一下BindView.bind(this)嗎,那這個(gè)玩意是干什么呢。試想一下,前面做的一大堆工作是為了生成自動(dòng)綁定控件的Java代碼,如果生成的Java代碼不能和你要使用的地方關(guān)聯(lián)起來(lái),那也是沒有用的,可以把BindView.bind(this)理解為調(diào)用了你生成的Java代碼,而生成了代碼中完成了一些控件的初始化工作,自然你的控件就變得可用了。

  接口:Finder 定義findView方法

  實(shí)現(xiàn)類:ActivityFinder Activity中使用,ViewFinder View中使用

  接口:Injector inject方法將來(lái)是要?jiǎng)?chuàng)建在生成的Java文件中,用該方法中傳遞過來(lái)的參數(shù)進(jìn)行控件的初始化。

  輔助類:ViewInjector 調(diào)用和傳遞參數(shù)

  這個(gè)代碼我就不貼了,就一點(diǎn)點(diǎn)內(nèi)容,一看就明白了。

  4.在AnnotatedClass中生成Java代碼

  生成代碼使用了一個(gè)很好用的庫(kù) Javapoet 。類,方法,都可以使用構(gòu)建器構(gòu)建出來(lái),很好上手,再也不用拼接字符串了。哈哈哈哈~

  public JavaFile generateFinder() {

  //構(gòu)建方法

  MethodSpec.Builder injectMethodBuilder = MethodSpec.methodBuilder(“inject”)

  .addModifiers(Modifier.PUBLIC)//添加描述

  .addAnnotation(Override.class)//添加注解

  .addParameter(TypeName.get(mClassElement.asType()), “host”, Modifier.FINAL)//添加參數(shù)

  .addParameter(TypeName.OBJECT, “source”)//添加參數(shù)

  .addParameter(TypeUtil.FINDER, “finder”);//添加參數(shù)

  for (BindViewField field : mFiled) {

  //添加一行

  injectMethodBuilder.addStatement(“host.$N=($T)finder.findView(source,$L)”, field.getFieldName()

  , ClassName.get(field.getFieldType()), field.getResId());

  }

  String packageName = getPackageName(mClassElement);

  String className = getClassName(mClassElement, packageName);

  ClassName bindClassName = ClassName.get(packageName, className);

  //構(gòu)建類

  TypeSpec finderClass = TypeSpec.classBuilder(bindClassName.simpleName() + “$$Injector”)//類名

  .addModifiers(Modifier.PUBLIC)//添加描述

  .addSuperinterface(ParameterizedTypeName.get(TypeUtil.INJECTOR, TypeName.get(mClassElement.asType())))//添加接口(類/接口,范型)

  .addMethod(injectMethodBuilder.build())//添加方法

  .build();

  return JavaFile.builder(packageName, finderClass).build();

  }

  public String getPackageName(TypeElement type) {

  return mElementUtils.getPackageOf(type).getQualifiedName().toString();

  }

  private static String getClassName(TypeElement type, String packageName) {

  int packageLen = packageName.length() + 1;

  return type.getQualifiedName().toString().substring(packageLen).replace(‘。’, ‘$’);

  }

  可以在代碼里System.out調(diào)試注解處理器的代碼。

  還要注意的一點(diǎn),項(xiàng)目之間的相互引用。

  bindview-complier 引用 bindview-annotation

  app 引用了剩下的三個(gè)module,在引用 bindview-complier 的時(shí)候用的apt的方式

  apt project(‘:bindview-compiler’)

  就寫到這里吧,Demo 放在 Github上了

查看詳情

processor技術(shù)

查看更多>>

processor資訊

Simple Circuit Activates Fan W

Simple Circuit Activates Fan W

Abstract: A circuit is shown that senses the temperature of a remote thermal...

2009-04-18 標(biāo)簽:Processor 1112 0

查看更多>>

processor數(shù)據(jù)手冊(cè)

相關(guān)標(biāo)簽

相關(guān)話題

換一批
  • wifi模塊
    wifi模塊
    +關(guān)注
    Wi-Fi模塊又名串口Wi-Fi模塊,屬于物聯(lián)網(wǎng)傳輸層,功能是將串口或TTL電平轉(zhuǎn)為符合Wi-Fi無(wú)線網(wǎng)絡(luò)通信標(biāo)準(zhǔn)的嵌入式模塊,內(nèi)置無(wú)線網(wǎng)絡(luò)協(xié)議IEEE802.11b.g.n協(xié)議棧以及TCP/IP協(xié)議棧。傳統(tǒng)的硬件設(shè)備嵌入Wi-Fi模塊可以直接利用Wi-Fi聯(lián)入互聯(lián)網(wǎng),是實(shí)現(xiàn)無(wú)線智能家居、M2M等物聯(lián)網(wǎng)應(yīng)用的重要組成部分。
  • UHD
    UHD
    +關(guān)注
    UHD是”超高清“的意思UHD的應(yīng)用在電視機(jī)技術(shù)上最為普遍,目前已有不少?gòu)S商推出了UHD超高清電視。
  • 四軸飛行器
    四軸飛行器
    +關(guān)注
    四軸飛行器,又稱四旋翼飛行器、四旋翼直升機(jī),簡(jiǎn)稱四軸、四旋翼。這四軸飛行器(Quadrotor)是一種多旋翼飛行器。四軸飛行器的四個(gè)螺旋槳都是電機(jī)直連的簡(jiǎn)單機(jī)構(gòu),十字形的布局允許飛行器通過改變電機(jī)轉(zhuǎn)速獲得旋轉(zhuǎn)機(jī)身的力,從而調(diào)整自身姿態(tài)。具體的技術(shù)細(xì)節(jié)在“基本運(yùn)動(dòng)原理”中講述。
  • STEP7
    STEP7
    +關(guān)注
    STEP 7是一款編程軟件,廠商是西門子,用于西門子系列工控產(chǎn)品包括SIMATIC S7、M7、C7和基于PC的WinAC的編程、監(jiān)控和參數(shù)設(shè)置,是SIMATIC工業(yè)軟件的重要組成部分。
  • 車載攝像頭
    車載攝像頭
    +關(guān)注
    車載攝像頭能非常實(shí)時(shí)的呈現(xiàn)視頻和音頻的功能為我們交通事故個(gè)處理和定位提供了更科學(xué)的依據(jù),讓我們的財(cái)產(chǎn)和人生安全得到了充分的保障。
  • LPC1114
    LPC1114
    +關(guān)注
    LPC1114是NXP公司推出的一款A(yù)RM Cortex-M0 內(nèi)核的32位單片機(jī)。它的主頻最大可達(dá)50MHz,內(nèi)部集成時(shí)鐘產(chǎn)生單元,不用外部晶振也可以工作。
  • 射頻器件
    射頻器件
    +關(guān)注
  • 開發(fā)套件
    開發(fā)套件
    +關(guān)注
    開發(fā)套件是集成了仿真、輸入輸出、usb、lcd、網(wǎng)絡(luò)等許多接口的單片機(jī)開發(fā)工具。通過usb接口連接電腦,具有代碼高速下載,在線調(diào)試,斷點(diǎn)、單步、變量觀察,寄存器觀察等功能,實(shí)現(xiàn)對(duì)單片機(jī)實(shí)時(shí)在線仿真、調(diào)試。開發(fā)套件能夠協(xié)助初學(xué)者和設(shè)計(jì)人員快速評(píng)估及進(jìn)行多種應(yīng)用開發(fā),熟悉掌握硬件原理和協(xié)議棧。
  • 液晶彩電
    液晶彩電
    +關(guān)注
  • LM3S8962
    LM3S8962
    +關(guān)注
  • ACS800
    ACS800
    +關(guān)注
  • 文本顯示器
    文本顯示器
    +關(guān)注
      文本顯示器,又名終端顯示器,是一種單純以文字呈現(xiàn)的人機(jī)互動(dòng)系統(tǒng)。通過文本顯示器,將所需要控制的內(nèi)容,編寫成相應(yīng)的程序,最終在文本顯示器的界面上顯示出來(lái)。這樣,不但大大提高了操作的方便性,而且能夠顯著提高工作效率。
  • 光電探測(cè)器
    光電探測(cè)器
    +關(guān)注
    光電探測(cè)器的原理是由輻射引起被照射材料電導(dǎo)率發(fā)生改變。光電探測(cè)器在軍事和國(guó)民經(jīng)濟(jì)的各個(gè)領(lǐng)域有廣泛用途。在可見光或近紅外波段主要用于射線測(cè)量和探測(cè)、工業(yè)自動(dòng)控制、光度計(jì)量等;在紅外波段主要用于導(dǎo)彈制導(dǎo)、紅外熱成像、紅外遙感等方面。
  • TPU
    TPU
    +關(guān)注
    熱塑性聚氨酯彈性體又稱熱塑性聚氨酯橡膠,簡(jiǎn)稱TPU,是一種(AB)n型嵌段線性聚合物,A為高分子量(1000~6000)的聚酯或聚醚,B為含2~12直鏈碳原子的二醇,AB鏈段間化學(xué)結(jié)構(gòu)是二異氰酸酯。熱塑性聚氨酯橡膠靠分子間氫鍵交聯(lián)或大分子鏈間輕度交聯(lián),隨著溫度的升高或降低,這兩種交聯(lián)結(jié)構(gòu)具有可逆性。
  • 馬達(dá)驅(qū)動(dòng)
    馬達(dá)驅(qū)動(dòng)
    +關(guān)注
    Motor drive組裝在照相內(nèi)的彈簧或附件,借助微型電機(jī)自動(dòng)地卷取膠片,大多是指35毫米單鏡頭反光相機(jī)所用的。拍一片格和連拍可以交替,連拍時(shí)一般一秒鐘拍3—5片格。視照相機(jī)的種類,將背部蓋子換為長(zhǎng)膠卷用片盒,即可拍250片格。
  • OK6410
    OK6410
    +關(guān)注
  • AWR
    AWR
    +關(guān)注
  • 74LS151
    74LS151
    +關(guān)注
  • FHD
    FHD
    +關(guān)注
  • 安防芯片
    安防芯片
    +關(guān)注
  • 電容筆
    電容筆
    +關(guān)注
  • 飛凌
    飛凌
    +關(guān)注
  • Hi3516
    Hi3516
    +關(guān)注
  • CC2640
    CC2640
    +關(guān)注
  • HD-SDI
    HD-SDI
    +關(guān)注
  • SOP封裝
    SOP封裝
    +關(guān)注
  • 工業(yè)路由器
    工業(yè)路由器
    +關(guān)注
    工業(yè)路由器是一種,利用公用無(wú)線網(wǎng)絡(luò)為用戶提供無(wú)線的數(shù)據(jù)傳輸功能。已廣泛應(yīng)用于物聯(lián)網(wǎng)產(chǎn)業(yè)鏈中的M2M行業(yè),如智能電網(wǎng)、智能交通、智能家居、金融物聯(lián)網(wǎng)無(wú)線通信路由器、移動(dòng)POS終端、供應(yīng)鏈自動(dòng)化、工業(yè)自動(dòng)化、智能建筑、消防、公共安全、環(huán)境保護(hù)、氣象、數(shù)字化醫(yī)療、遙感勘測(cè)、農(nóng)業(yè)、林業(yè)、水務(wù)、煤礦、石化等領(lǐng)域。
  • McAfee
    McAfee
    +關(guān)注
  • 高清技術(shù)
    高清技術(shù)
    +關(guān)注
  • S3F9454
    S3F9454
    +關(guān)注
換一批

關(guān)注此標(biāo)簽的用戶(0人)

編輯推薦廠商產(chǎn)品技術(shù)軟件/工具OS/語(yǔ)言教程專題