怎么模拟自动触发触摸电路

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么模拟自动触发触摸电路相关的知识,希望对你有一定的参考价值。

您好,模拟自动触发触摸电路可以通过使用模拟信号发生器或者编写相应的程序来实现。其中,模拟信号发生器可以产生各种波形信号,包括正弦波、方波、三角波等,可以模拟出各种触摸信号。编写程序可以使用各种编程语言,如C、Python等,通过控制GPIO口输出高低电平来模拟触摸信号。
具体实现方法如下:
1.使用模拟信号发生器:将模拟信号发生器的输出连接到触摸电路的输入端,通过调节信号发生器的输出波形和频率来模拟出各种触摸信号。
2.编写程序:通过控制GPIO口输出高低电平来模拟触摸信号。首先需要了解触摸电路的输入方式,一般为电容触摸或者电阻触摸。对于电容触摸,可以通过在GPIO口输出高低电平的同时,将另外一个GPIO口设置为输入模式,来模拟出电容触摸信号。对于电阻触摸,可以通过在GPIO口输出高低电平的同时,通过一个电阻网络来模拟出电阻触摸信号。
总之,模拟自动触发触摸电路需要根据具体的电路设计和实现方式来选择相应的方法。
参考技术A 要模拟自动触发触摸电路,您需要使用一个触摸传感器并将其连接到一个计算机或微控制器上以模拟触摸事件。

以下是一些可能实现自动触发触摸电路的方法:

1. 使用Arduino:如果您熟悉Arduino开发板,可以使用一个触摸传感器(例如TTP223或TTP223B)并将其连接到Arduino上。然后,您可以编写一个简单的程序来检测传感器的状态并模拟触摸事件。

2. 使用Python:如果您熟悉Python编程语言,可以使用GPIO或SMBus库来连接一个触摸传感器(例如CAP1166触摸键盘控制器)到您的电脑或树莓派上。您可以编写一个Python脚本来检测传感器的状态并模拟触摸事件。

3. 使用模拟电路:使用模拟集成电路(ASIC)来模拟触摸事件。这个方法比较复杂,需要一定的电路设计和制造的经验。

总的来说,模拟自动触发触摸电路需要一些电路设计和编程技能。如果您不是电路设计或编程方面的专业人士,建议请专业技术人员协助您完成。
参考技术B 您好,为了模拟自动触发触摸电路,可以使用一些基本的电路板和元件进行构建,使用一个开关或者电路板上的其他零部件来触发触摸电路。具体步骤如下:

1. 选择合适的电路板和元件,并根据实际情况进行连接和上电。

2. 确认电路板上的触摸电路可以正常工作,并且能够检测到手指或其他物体的接触。

3. 可以通过加装一个机械开关或者红外感应传感器等元件,来触发触摸电路,实现自动化操作。

4. 确认触发电路是否正常工作,并进行相应的调整和测试。

总之,通过选择合适的元件和电路板,并按照合适的连接方式进行组合和控制,即可模拟和实现自动触发触摸电路的操作。
参考技术C 1 可以使用模拟信号发生器模拟人手触摸电路的信号。

2 在电路设计中,通常使用电容或电阻等元件来实现触摸检测,当人手接触到电路时,会改变电容或电阻的值,从而触发电路。

3 可以通过改变电容或电阻的值,调整触摸检测的灵敏度和触发条件,实现自动触发触摸电路。
同时,还可以使用微控制器等芯片来实现更复杂的触摸控制功能。
参考技术D 可以利用电路模拟器,设计一个触摸电路,然后在电路模拟器中设置一个微分信号源,并将其设置为负极脉冲,这样就可以实现触摸电路的自动触发。另外,也可以利用Arduino板来模拟触控,通过设定一定的时间间隔,使得Arduino板每隔一段时间就会自动发出触摸信号,从而实现自动触发触摸电路的目的。

没有触摸被触发!

【中文标题】没有触摸被触发!【英文标题】:No touches being triggered! 【发布时间】:2010-12-14 08:12:52 【问题描述】:

好的,我想我之前的问题没有详细说明。 我正在提供更多详细信息。

在发布完整的源代码之前,我必须询问我的问题: 我的问题是为什么下面的程序不调用 touchesBegan、touchesMoved 和 touchesEnded?它曾经在以前的 iOS SDK 中工作。我当前的 xcode 版本是 3.2.5

一条评论:如果您在 iPad 模拟器上运行以下代码,它会调用所有触摸。所以这很奇怪为什么 iPhone 模拟器和实际设备不响应​​这个问题。

ma​​in.m

#import <UIKit/UIKit.h>
int main(int argc, char *argv[]) 

    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, @"AppDelegate");
    [pool release];
    return retVal;


AppDelegate.h

#import <UIKit/UIKit.h>
@class GLView;

@interface AppDelegate : NSObject <UIApplicationDelegate> 

    UIWindow*   mp_window;
    GLView*     mp_viewController;


@end

AppDelegate.mm

#import "AppDelegate.h"
#import "GLView.h"

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


    CGRect screenBounds = [[UIScreen mainScreen] bounds];

    mp_window = [[UIWindow alloc] initWithFrame: screenBounds];
    mp_viewController = [[GLView alloc] initWithFrame: screenBounds];   


    [mp_window addSubview: mp_viewController];
    [mp_window makeKeyAndVisible];

    return YES;


- (void)applicationWillResignActive:(UIApplication *)application


- (void)applicationDidBecomeActive:(UIApplication *)application


- (void)applicationWillTerminate:(UIApplication *)application


- (void)applicationDidEnterBackground:(UIApplication *)application

    // Handle any background procedures not related to animation here.


- (void)applicationWillEnterForeground:(UIApplication *)application

    // Handle any foreground procedures not related to animation here.


- (void)dealloc

    [mp_viewController release];
    [mp_window release];

    [super dealloc];


@end

GLView.h

#import <OpenGLES/EAGL.h>
#import <QuartzCore/QuartzCore.h>

@interface GLView : UIView <UIAccelerometerDelegate>

@private
    EAGLContext*        mp_context;


- (void) gameLoop;

- (void) drawView: (float) interpolation;

- (void)touchesBegan: (NSSet*) touches withEvent: (UIEvent*) event;
- (void)touchesMoved: (NSSet*) touches withEvent: (UIEvent*) event;
- (void)touchesEnded: (NSSet*) touches withEvent: (UIEvent*) event;

- (void)accelerometer: (UIAccelerometer *) accelerometer 
        didAccelerate: (UIAcceleration *) acceleration;

@end

GLView.mm

#import "GLView.h"
#import <OpenGLES/ES2/gl.h>

@implementation GLView

+ (Class) layerClass

    return [CAEAGLLayer class];


- (id) initWithFrame: (CGRect) frame

    if (self = [super initWithFrame: frame]) 
    
        CAEAGLLayer* eaglLayer = (CAEAGLLayer*) super.layer; 
        eaglLayer.opaque = YES; 

        EAGLRenderingAPI api = kEAGLRenderingAPIOpenGLES1;
        mp_context = [[EAGLContext alloc] initWithAPI: api];

        if (!mp_context || ![EAGLContext setCurrentContext: mp_context]) 
        
            [self release];
            return nil;
        

        [mp_context renderbufferStorage: GL_RENDERBUFFER 
                           fromDrawable: eaglLayer];

        //TODO: to setup the size of frame for render
        //////

        //acc
        [[UIAccelerometer sharedAccelerometer] setUpdateInterval:(0.1f)];
        [[UIAccelerometer sharedAccelerometer] setDelegate:self];

        //multi - touch
        [self setUserInteractionEnabled:YES];
        [self setMultipleTouchEnabled:YES];


        [self performSelectorOnMainThread:@selector(gameLoop) 
                               withObject:nil waitUntilDone:NO];
    

    return self;


- (void) gameLoop
   
    while(1)
    
            //Get all touches
        while(CFRunLoopRunInMode(kCFRunLoopDefaultMode, 
                     0.002f, 
                     TRUE) == kCFRunLoopRunHandledSource);
            //render scene
            [drawView 1.0f];
    


- (void) drawView: (float) interpolation

    //TODO: adding render image here
    //NSLog(@"Render: %f", interpolation);
    [mp_context presentRenderbuffer: GL_RENDERBUFFER];


- (void) dealloc


    if ([EAGLContext currentContext] == mp_context)
        [EAGLContext setCurrentContext: nil];


    [mp_context release]; 
    //TODO: relese all objects here
    [super dealloc];    


- (void)touchesBegan: (NSSet*) touches withEvent: (UIEvent*) event 

    int hash;
    CGPoint points;
    for(UITouch * touch in touches)
    
        hash = [touch hash];
        points = [touch locationInView: self];
        NSLog(@"Touch Began: %d, %f, %f", hash, points.x, points.y);
    



- (void)touchesMoved: (NSSet*) touches withEvent: (UIEvent*) event 

    int hash;
    CGPoint points;
    for(UITouch * touch in touches)
    
        hash = [touch hash];
        points = [touch locationInView: self];
        NSLog(@"Touch Moved: %d, %f, %f", hash, points.x, points.y);
    



- (void)touchesEnded: (NSSet*) touches withEvent: (UIEvent*) event 

    int hash;
    CGPoint points;
    for(UITouch * touch in touches)
    
        hash = [touch hash];
        points = [touch locationInView: self];
        NSLog(@"Touch Ended: %d, %f, %f", hash, points.x, points.y);
    


- (void) accelerometer: (UIAccelerometer *) accelerometer 
         didAccelerate: (UIAcceleration *) acceleration 

    NSLog(@"Accelerometer: (%f, %f, %f)", 
          acceleration.x, 
          acceleration.y, 
          acceleration.z );


@end

这只是一个测试用例。我主要关心的是为什么使用新的 SDK,触摸不会被调用?请不要告诉我我必须使用 NSTimer 或其他计时器。我在安装新的 SDK 之前做了工作。我只是想知道是否有人可以在该源代码中看到除此之外的任何问题。

谢谢, 孟菲斯

【问题讨论】:

【参考方案1】:

我不确定你的问题是什么。但是,我确实注意到,您没有视图控制器——虽然您的 UIApplicationDelegate 子类有一个 mp_viewController 成员,但它是一个 UIView 而不是 UIViewController。这可能是您问题的根源。

我建议添加一个与您的视图关联的 UIViewController 并将其分配给应用程序委托的 rootViewController 属性。

【讨论】:

能否请您为我创建一个简单的源代码。另一件真正令人讨厌的事情是为什么它可以在 iPad 上运行?

以上是关于怎么模拟自动触发触摸电路的主要内容,如果未能解决你的问题,请参考以下文章

一款触摸开关电路

C# WPF如何模拟触摸屏Touch事件??急急急 重谢!!在线等!!

JS触摸事件

三菱Q系列PLC与触摸屏,触摸屏里面可以设定零位,plc用编程软件怎么查看触摸屏设定的零位?

iOS触摸事件

Arduino UNO通过电容的直接检测实现简易触摸开关