WEBVTT

1
00:06.960 --> 00:11.820
Bu yüzden, çocuklar, bu kursta daha fazla

2
00:11.820 --> 00:13.860
ilerlemeden önce, kullanacağımız
zamanlayıcı kütüphanesine aşina olalım.

3
00:14.130 --> 00:19.410
Kullanacağımız zamanlayıcı kütüphanesi çok
basit ve

4
00:19.410 --> 00:20.190
anlaşılırdır ve kullanımı çok kolaydır.

5
00:20.700 --> 00:23.280
Şimdi bir önceki ödevin bir parçası
olarak.

6
00:24.670 --> 00:26.080
Sana sordum.

7
00:27.860 --> 00:29.300
Bu dosyaları kopyalamak için.

8
00:29.300 --> 00:29.690
İşte bu.

9
00:29.690 --> 00:36.260
Timer lipsi timer lib dot etch ve timer
lib test dot c projemize dahil edilmiştir.

10
00:36.260 --> 00:39.410
Ve umarım bir önceki ödevi
tamamlamışsınızdır.

11
00:39.740 --> 00:40.400
Tamam.

12
00:40.550 --> 00:47.330
Şimdi timer Lipsey ve Timer lib dot H
dosyası timer kütüphanesinin bir
parçasıdır.

13
00:47.660 --> 00:52.040
Bu dosyalara bakmanıza hiç gerek yok.

14
00:52.940 --> 01:00.560
Timer lib underscore test dot C, bu
zamanlayıcı kütüphanesinin nasıl

15
01:00.560 --> 01:05.330
kullanılacağını çok basit, gösterici bir
programla gösteren örnek bir uygulamadır.

16
01:06.110 --> 01:11.240
Bu nedenle, zamanlayıcı kütüphanesinin
dahili uygulamasına bakmadan, hemen timer
lib

17
01:11.240 --> 01:19.010
test dot C'ye bakacağız ve gelecekteki
olayları planlamak ve zamanlayıcı

18
01:19.010 --> 01:25.490
tabanlı işimizi yapmak için zamanlayıcı
kütüphanesini nasıl kullanacağımıza aşina
olacağız.

19
01:26.240 --> 01:28.620
Pekâlâ, zamanınızı ve enerjinizi boşa
harcamayın.

20
01:28.650 --> 01:32.400
Hemen timer lib underscore test dot c'ye
bakacağız.

21
01:32.430 --> 01:34.200
Bu çok basit bir program.

22
01:36.620 --> 01:47.090
Timer lib dot c'ye gelirsek, yaklaşık 75
satır kod içeren

23
01:47.090 --> 01:49.790
bir dosya olduğunu görebilirsiniz ve hemen
ana fonksiyonla başlayacağız.

24
01:50.540 --> 01:53.660
Yani bu örnek program zamanlayıcı
kütüphanesini kullanmaktadır.

25
01:53.660 --> 02:01.820
Bu nedenle timer dot h'yi dahil ettim ve
bazı veriler aldım.

26
02:01.940 --> 02:07.580
Bellekte kalıcı olan bazı veriler, statik

27
02:07.580 --> 02:08.100
veriler veya yığın üzerindeki veriler
olabilir.

28
02:08.120 --> 02:12.530
Heap, malloc veya calloc çağrıları
kullanılarak oluşturulan veri anlamına
gelir.

29
02:13.310 --> 02:13.790
Tamam.

30
02:13.790 --> 02:20.990
Bu tür veriler oluşturmanın amacı, bu
verileri zamanlayıcıya

31
02:20.990 --> 02:28.700
iletmektir, böylece zamanlayıcı
çağrıldığında, zamanlayıcı kütüphanesine
sağlayacağımız veriler

32
02:28.700 --> 02:30.650
üzerinde iş mantığına göre bazı işlemler
gerçekleştirecektir.

33
02:30.770 --> 02:36.410
Şimdi bir sonraki satırda hemen bir
zamanlayıcı oluşturduğumuzu
görebilirsiniz,

34
02:36.620 --> 02:44.360
değil mi? Setup underscore timer işlevi,
bir zamanlayıcı

35
02:44.360 --> 02:45.800
oluşturan ve oluşturulan zamanlayıcıya
işaretçiyi geri döndüren API'dir.

36
02:46.700 --> 02:53.690
Bu API'nin zamanlayıcıyı oluşturduğunu,
ancak zamanlayıcıyı gerçekten başlatmak
için

37
02:53.690 --> 02:55.190
bir API start underscore timer kullanmanız
gerektiğini unutmayın.

38
02:56.180 --> 02:56.780
Doğru.

39
02:57.230 --> 03:01.760
Şimdi bu işleve aktarılan bu argümanları
anlamanız gerekir.

40
03:03.200 --> 03:10.010
Bir zamanlayıcı oluşturduğumuzda, her
zaman zamanlayıcı kütüphanesine fonksiyona
bir işaretçi sağlamamız

41
03:10.550 --> 03:16.880
gerekir, böylece zamanlayıcı
ateşlendiğinde fonksiyon işaretçisini
kullanarak bu fonksiyonu çağırır.

42
03:17.990 --> 03:23.240
Yani bu, işleve bir işaretçidir ve bu
işlev uygulamaya aittir.

43
03:23.570 --> 03:27.350
Bahsettiğim fonksiyonun bu olduğunu
görebilirsiniz.

44
03:27.620 --> 03:30.980
Sadece bu işleve bir işaretçi
gönderiyorum.

45
03:31.580 --> 03:35.900
Ve bu fonksiyonun bu prototipte olması
gerektiğini unutmayın.

46
03:36.500 --> 03:38.900
Yani, geçersiz olarak geri dönmelidir.

47
03:38.930 --> 03:42.860
Fonksiyonun ilk argümanı zamanlayıcı
tipinde olmalıdır.

48
03:42.860 --> 03:45.860
İkinci argüman ise geçersiz yıldızdır.

49
03:46.670 --> 03:50.570
Zamanlayıcı kütüphanesine rastgele bir
fonksiyon aktaramazsınız.

50
03:50.660 --> 03:52.160
Bu bir kısıtlama.

51
03:52.190 --> 03:53.960
Buna saygı duymalısınız.

52
03:54.590 --> 03:55.190
Tamam.

53
03:55.550 --> 03:57.980
Şimdi, ikinci argüman zaman aralığıdır.

54
03:58.010 --> 04:02.850
Zamanlayıcınızın bu süreden sonra
ateşlenmesini istersiniz.

55
04:02.870 --> 04:05.120
Milisaniye cinsinden belirtilir.

56
04:05.120 --> 04:13.640
Bu yüzden zamanlayıcımın, zamanlayıcının
başlatıldığı noktadan tam olarak 500
milisaniye sonra ateşlenmesini istiyorum.

57
04:15.390 --> 04:16.020
Tamam.

58
04:16.260 --> 04:23.790
Şimdi, her şeyi sıfır sıfır ve false
olarak belirttiysem ve tabii ki

59
04:23.790 --> 04:29.070
ikinci son argüman, zamanlayıcının
üzerinde çalışacağı veriye işaretçi
geçirmeniz gerektiğine dikkat edin.

60
04:29.910 --> 04:38.010
Şimdi, bu argüman kurulumuyla,
zamanlayıcınız 500 milisaniye

61
04:38.040 --> 04:39.180
sonra ateşlenecek, ancak yalnızca bir kez
ateşlenecektir.

62
04:40.270 --> 04:40.780
Tamam.

63
04:40.810 --> 04:43.910
500 milisaniye sonra zamanlayıcınız
ateşlenecektir.

64
04:43.930 --> 04:49.240
Zamanlayıcı ateşlenecek dediğimde,
zamanlayıcının bu işlevi çağıracağı
anlamına gelir.

65
04:49.480 --> 04:53.680
Ve bu fonksiyonda uyguladığınız mantık ne
olursa olsun zamanlayıcı tarafından
yürütülecektir.

66
04:53.680 --> 04:54.760
İşte bu kadar.

67
04:54.850 --> 04:57.970
Zamanlayıcınız hareketsiz veya pasif hale
gelecektir.

68
04:59.020 --> 04:59.380
Tamam.

69
04:59.380 --> 05:00.850
Sadece bir kez ateşlenecektir.

70
05:01.120 --> 05:07.750
Ancak zamanlayıcınızın tekrar tekrar on
kez ateşlemesini istiyorsanız.

71
05:08.960 --> 05:11.000
Her 500 milisaniyeden sonra.

72
05:11.000 --> 05:14.630
Ardından üç ve dört numaralı argüman
kullanılacaktır.

73
05:15.290 --> 05:17.840
Zamanlayıcımın ateşlemesini istiyorum.

74
05:18.290 --> 05:20.660
Diyelim ki 300 milisaniye sonra.

75
05:24.480 --> 05:25.950
Ve on kez.

76
05:26.580 --> 05:33.030
Şimdi bu kurulumla, zamanlayıcım ilk kez
500 milisaniye sonra ateşlenecek.

77
05:33.300 --> 05:41.010
Ancak bundan sonra zamanlayıcım her 300
milisaniyede bir ateşlenecek ve on kez
ateşlenecek.

78
05:42.230 --> 05:42.770
Tamam.

79
05:43.100 --> 05:50.210
Yani on kez ateşledikten sonra, sadece
benim zamanlayıcım uykuda veya pasif hale
gelecek.

80
05:51.050 --> 05:57.110
Yani ilk kez, zamanlayıcı 500
milisaniyeden sonra beş kez ateşlenecek ve
bundan sonra

81
05:57.110 --> 06:03.590
zamanlayıcı her 300 saniyede bir periyodik
olarak ateşlenecek ve dokuz kez
ateşlenecektir.

82
06:04.220 --> 06:12.050
Ve zamanlayıcımın süresiz olarak her 300
milisaniyede bir ateşlenmesini istersem, o
zaman yapacağım.

83
06:13.690 --> 06:15.610
Dördüncü bağımsız değişken sıfırdır.

84
06:15.910 --> 06:21.120
Yani bu, zamanlayıcının kaç kez
ateşleneceği konusunda herhangi bir
kısıtlama olmadığı anlamına gelir.

85
06:21.130 --> 06:25.600
Uygulamanız çalıştığı sürece ateşlemeye
devam edecektir.

86
06:27.320 --> 06:27.920
Tamam.

87
06:28.070 --> 06:34.340
Ve eğer bu son argümanı true olarak
geçersem, son argüman backoff anlamına
gelir.

88
06:34.340 --> 06:36.650
Üstel parametre.

89
06:37.040 --> 06:37.820
Şimdi geri dön.

90
06:38.780 --> 06:47.270
Şimdi, üstel geri dönüş, zamanlayıcımın
ilk kez 500 milisaniye sonra ateşleneceği
anlamına geliyor.

91
06:47.540 --> 06:52.520
İkinci kez, zamanlayıcım 300 milisaniye
sonra çalışacak.

92
06:53.000 --> 06:58.160
Üçüncü kez, zamanlayıcım 600 milisaniye
sonra çalışacak.

93
06:58.760 --> 07:04.010
Dördüncü kez, zamanlayıcım 1200 milisaniye
sonra çalışacak.

94
07:04.190 --> 07:11.030
Yani zamanlayıcının süresi dolduktan
sonra, zamanlayıcının ateşleyeceği zaman
aralığı

95
07:11.030 --> 07:12.200
her seferinde, bir dahaki sefere iki
katını alacağız.

96
07:13.160 --> 07:13.700
Tamam.

97
07:13.700 --> 07:19.850
Dolayısıyla, zamanlayıcınızın bu şekilde
çalışmasını istiyorsanız, son argümanı
true olarak geçirmeniz gerekir.

98
07:20.950 --> 07:28.360
Böylece, bu kurulum zamanlayıcı işlevinde
geçirilmesi gereken tüm parametreleri
açıkladım.

99
07:28.720 --> 07:34.690
Çok basit bir durum için her zaman is at
zero sıfır ve false değerlerini
geçebilirsiniz.

100
07:35.770 --> 07:39.670
Böylece zamanlayıcımız 500 milisaniye
sonra yalnızca bir kez çalışacaktır.

101
07:39.670 --> 07:40.570
Bu kadar.

102
07:40.780 --> 07:45.250
Bu fonksiyonun tanımını gerçekten görmek
istiyorsanız, inceleyebilirsiniz.

103
07:45.250 --> 07:47.500
Bu fonksiyon tanımıdır.

104
07:47.740 --> 07:50.920
Aslında, zamanlayıcı lib nokta kenarına
gidebilirsiniz.

105
07:52.130 --> 07:54.980
Ve işte fonksiyon prototipi.

106
07:56.580 --> 08:00.270
İlk sona erme zaman aralığını milisaniye
cinsinden görebilirsiniz.

107
08:00.630 --> 08:05.760
İkinci bağımsız değişken ise milisaniye
cinsinden sonraki sona erme zaman
aralığıdır.

108
08:05.790 --> 08:10.470
Maksimum sona erme sayısı ve sonsuz için
sıfır geçer.

109
08:11.070 --> 08:17.130
Daha sonra bu, ateşlendiğinde zamanlayıcı
kütüphanesi tarafından kullanılacak

110
08:17.130 --> 08:18.600
olan kullanıcı uygulama belleğine işaretçi
olan argümandır.

111
08:18.780 --> 08:24.590
Ve zamanlayıcıdan üstel yedekleme özelliği
istiyorsanız, son bağımsız değişkeni true
olarak geçirin.

112
08:24.600 --> 08:27.450
Aksi takdirde null veya sorry olarak
bırakın.

113
08:27.480 --> 08:28.260
Yanlış.

114
08:31.360 --> 08:37.540
Şimdi, bu programda daha ileri giderseniz,
bunun ana menü türünde bir program
olduğunu görebilirsiniz.

115
08:37.690 --> 08:44.260
Ve kullanıcının seçimine göre, programın
Timer kütüphanesi

116
08:44.260 --> 08:45.550
tarafından sağlanan çeşitli API'leri
kullandığını görebilirsiniz.

117
08:45.850 --> 08:48.750
Bir numaralı seçim için zamanlayıcıyı
duraklatmak istiyoruz.

118
08:48.760 --> 08:52.660
Ardından ikinci durum için API duraklatma
zamanlayıcısını kullanabilirsiniz.

119
08:52.690 --> 08:59.080
Zamanlayıcıyı duraklatma durumundan devam
ettirmek istiyorsanız, zamanlayıcıyı devam
ettirme özelliğini kullanabilirsiniz.

120
08:59.080 --> 09:04.690
Zamanlayıcıyı baştan başlatmak
istiyorsanız, API yeniden başlatma
zamanlayıcısını kullanabilirsiniz.

121
09:04.840 --> 09:13.000
Zamanlayıcıyı yeniden zamanlamak
istiyorsanız, yani diyelim ki
zamanlayıcınız her

122
09:13.000 --> 09:19.760
500 milisaniyeden sonra ateşleniyordu,
ancak şimdi zamanlayıcının zaman aralığını

123
09:19.760 --> 09:20.560
değiştirmek istiyorsunuz, böylece
zamanlayıcınız her 1000 milisaniyeden
sonra ateşlenecek.

124
09:20.590 --> 09:26.470
Daha sonra API'yi kullanabilir,
zamanlayıcıyı yeniden planlayabilir ve
zamanlayıcı

125
09:26.470 --> 09:28.300
ile işiniz bittiyse, API silme
zamanlayıcısını çağırmanız yeterlidir.

126
09:28.300 --> 09:31.250
Zamanlayıcıyı sonsuza dek yok edecektir.

127
09:32.250 --> 09:32.670
Tamam.

128
09:32.700 --> 09:38.430
Aksi takdirde, zamanlayıcıyı gerçekten
iptal etmek istiyorsanız, zamanlayıcıyı
iptal et seçeneğini kullanabilirsiniz.

129
09:39.560 --> 09:45.620
Ancak zamanlayıcıyı sil ile zamanlayıcıyı
iptal et arasındaki

130
09:45.620 --> 09:47.240
fark, zamanlayıcı iptal edildikten sonra
tekrar başlatılabilmesidir.

131
09:48.030 --> 09:49.200
Kullanıyorum.

132
09:50.420 --> 09:52.790
Bu API olan zamanlayıcı API'sini başlatın.

133
09:53.120 --> 09:56.130
Ancak zamanlayıcı silindiğinde sonsuza
kadar yok olur.

134
09:56.150 --> 10:02.230
Zamanlayıcıyı tekrar oluşturmak için
kurulum zamanlayıcı API'sini kullanarak
zamanlayıcıyı tekrar oluşturmanız gerekir.

135
10:02.540 --> 10:03.250
Doğru.

136
10:03.260 --> 10:09.100
Dolayısıyla, delete zamanlayıcısı
zamanlayıcıyı sildikten sonra, zamanlayıcı
nesnesi kullanılamaz hale gelir.

137
10:09.110 --> 10:12.110
Sıfırdan yeniden yaratılması gerekiyor.

138
10:12.710 --> 10:20.120
Ve zamanlayıcının süresinin dolmasına ne
kadar kaldığını bilmek istiyorsanız,

139
10:20.150 --> 10:23.090
bir API zamanlayıcısı kullanabilir, kalan
süreyi milisaniye cinsinden alabilirsiniz.

140
10:23.900 --> 10:24.410
Tamam.

141
10:24.410 --> 10:30.440
Dolayısıyla, zamanlayıcıyı 500 milisaniye
için zamanladıysanız ve diyelim ki

142
10:30.440 --> 10:37.520
200 milisaniye zaten geçtiyse ve
zamanlayıcının süresinin dolmasına

143
10:37.520 --> 10:38.660
300 milisaniye kaldıysa, bu API size 300
döndürecektir.

144
10:39.660 --> 10:40.200
Tamam.

145
10:40.320 --> 10:42.810
Yani bu çok basit bir program.

146
10:43.700 --> 10:49.250
Ve bu program size zamanlayıcı
kütüphanesini nasıl kullanacağınızı
öğretme amacına hizmet eder.

147
10:49.820 --> 10:56.420
Bir sonraki ders videosunda, zamanlayıcı
kütüphanesini STP projemizle entegre
edeceğiz.


