1

我编写了一个可以转换普通文本的应用程序,例如:“你好,我的名字是 XY”

成点和笔画( ..-. ; --.- ; . ; - ; etc etc)

现在我想将这些点和笔画转换为闪光,点的长度为 0.3 秒,笔画的长度为 0.6 秒。在每个点或笔划之后还有一个点长度的停顿,每个单词之后有一个双停顿,每个句子之后有一个三重停顿/中断。

我的代码中也隐含了中断。

现在的问题是轻描边不够不同。

因为它背后的想法是通过 Arduino Duo 和 fototransistor 将 Light 闪烁转换回 Text。

这是光转换过程的代码段落:

- (IBAction)send:(id)sender{

// 将文本转换为莫尔斯电码等

float needTime;
NSString *string = plotter;
for (int d = 0;d < [string length]; d++) {
    NSString *punktoderstrich = [string substringWithRange:NSMakeRange(d, 1)];
    if ([punktoderstrich isEqualToString:@"."]) {
        needTime = needTime + 0.4f;
        [self performSelector:@selector(playpunkt) withObject:nil afterDelay:needTime];
    }
    if ([punktoderstrich isEqualToString:@"-"]) {
        needTime = needTime + 1.0f;
        [self performSelector:@selector(playstrich) withObject:nil afterDelay:needTime];
    }
    if ([punktoderstrich isEqualToString:@" "]) {
        needTime = needTime + 0.4f;
        [self performSelector:@selector(playpause) withObject:nil afterDelay:needTime];

    }
    if ([punktoderstrich isEqualToString:@"/"]) {
        needTime = needTime + 0.3f;
        [self performSelector:@selector(playpause) withObject:nil afterDelay:needTime];

    }
}

- (void)torchAn {
[captureDevice lockForConfiguration:nil];
[captureDevice setTorchMode:AVCaptureTorchModeOn];
[captureDevice setFlashMode:AVCaptureFlashModeOn];
[captureDevice unlockForConfiguration];
}
- (void)torchAus {
[captureDevice lockForConfiguration:nil];
[captureDevice setTorchMode:AVCaptureTorchModeOff];
[captureDevice setFlashMode:AVCaptureFlashModeOff];
[captureDevice unlockForConfiguration];
}
-(void)playstrich{
// AudioServicesPlaySystemSound (outSystemSoundID2);
[self torchAn];
//[self performSelector:@selector(torchAus) withObject:nil afterDelay:0.8f];
}

-(void)playpunkt{
//AudioServicesPlaySystemSound (outSystemSoundID1);
[self torchAn];
//[self performSelector:@selector(torchAus) withObject:nil afterDelay:0.4f];
}

- (void)playpause{
// AudioServicesPlaySystemSound (outSystemSoundID3);
[self performSelector:@selector(torchAus) /*withObject:nil afterDelay:0.4f*/];
}

如您所见,我还导入了声音文件(短和长),但主要目标是发出正确的光信号。

我的问题:

短灯大多是可以的,除了 LED 首次闪烁时的第一个。长光信号实际上并不长。有时我在录制它们时会得到相同的结果。

并且在长灯应该点亮之后,以下短灯不会像正常情况那样短..嗯..

在我评论了声音出来的部分之后,整个过程变得更加稳定。我还将部件(关闭 LED)从它自己的标志移到了休息处。

我希望有人能给我一些小费左右:)

来自德国的问候!

PS:我的设备是iPhone 4s(带手电筒^^)

4

1 回答 1

1

就像布拉德说的那样,iPhone 闪光灯需要几毫秒才能打开。如果您仍然想使用它,唯一的可能性是(在我看来)更改您的协议并给单个信号更多时间。

这会减慢您的传输速度,但在接收器端,您可以定义一些置信区间(如加减 2 秒)。也许人类无法理解您的摩尔斯电码,因为它可能太慢(但也许他们会),像 iPhone 这样的机器作为接收器将完全能够理解它。

您必须玩弄时间间隔才能找到最短的有效时间间隔。

来自德国的问候。

于 2013-01-26T10:12:45.177 回答